使用Lightning Message Service(Message Channel)在Lightning页面内可以跨DOM进行通信。在同一 Lightning Page的Visualforce页面、Aura组件和Lightning web Component之间进行通信。订阅者也可以选择组件是从整个应用程序订阅消息,还是仅从活动区域订阅消息。
如果系统从Salesforce Classic切换到Lightning Experience,可以通过 lightning message service构建lwc实现与现有Visualforce页面或Aura组件通信。
message channel可以进行三部分执行: 创建/ 发布/ 订阅。
目前Message Channel不像表字段创建一样,拥有可视化操作,需要使用LightningMessageChannel的metadata type来创建Message Channel。我们以VS Code为例。需要创建 messageChannels目录,并且创建一个后缀为 .messageChannel-meta.xml的文件。
我们以demo中的 FiltersChange.messageChannel-meta.xml为例。此demo其他的场景也可以直接赋值粘贴然后进行一个快速的修改。lightning message channel包括以下的几部分构成:
<?xml version="1.0" encoding="UTF-8"?>
<LightningMessageChannel xmlns="<http://soap.sforce.com/2006/04/metadata>">
<isExposed>true</isExposed>
<lightningMessageFields>
<description>Search Key</description>
<fieldName>searchKey</fieldName>
</lightningMessageFields>
<lightningMessageFields>
<description>Max Price</description>
<fieldName>maxPrice</fieldName>
</lightningMessageFields>
<lightningMessageFields>
<description>Minimum number of Bedrooms</description>
<fieldName>minBedrooms</fieldName>
</lightningMessageFields>
<lightningMessageFields>
<description>Minimum number of Bathrooms</description>
<fieldName>minBathrooms</fieldName>
</lightningMessageFields>
<masterLabel>Filters Change Message Channel</masterLabel>
</LightningMessageChannel>
创建以后,当前文件右键deploy即可。
发布 Message Channel很简单,遵循三个步骤即可:
import { publish,``MessageContext} from 'lightning/messageService';
@wire(MessageContext) messageContext;