[設定] でのコンポーネントの表示
売上予測ページのコンポーネントの作成
エクスペリエンスビルダーサイト
ユーティリティバー
Outlook および Gmail
スタンドアロンアプリケーション
Visualforce ページ
フォーム要素
ファイルを開く
メッセージチャネルの作成
Message Service の範囲の定義
メッセージチャネルでの公開
メッセージチャネルの登録および登録解除
メッセージサービスの制限事項
モバイルデバイス機能の使用
CRM Analytics ダッシュボード
Lightning Web コンポーネントからメッセージチャネルでメッセージを公開するには、範囲設定されたモジュール @salesforce/messageChannel をコンポーネントの JavaScript ファイルに含め、Lightning Message Service の publish() 関数をコールします。
Lightning Message Service は、コンポーネントライフサイクルの破棄フェーズになるまで、登録しているコンポーネントにメッセージを公開します。Lightning ページから移動すると、コンポーネントがキャッシュされ、破棄されないことがあります。Lightning Message Service がアプリケーション全体に範囲設定されている場合でも、これらのコンポーネントは Lightning Message Service からのメッセージを公開および受信します。
github.com/trailheadapps/lwc-recipes リポジトリの lmsPublisherWebComponent は、Lightning ページで登録者に通知するメッセージを公開します。Lightning Message Service により、ページの Visualforce、Aura、Lightning Web コンポーネントの間でそのメッセージの通信が行われます。

コンポーネントの HTML テンプレートファイルには、取引先責任者のリストが表示されます。取引先責任者が選択されると、handleContactSelect ハンドラが呼び出され、メッセージがメッセージチャネルに公開されます。
1<!-- lmsPublisherWebComponent.html -->
2<template>
3 <lightning-card title="LMSPublisherWebComponent" icon-name="custom:custom30">
4 <div class="slds-m-around_medium" oncontactselect={handleContactSelect}>
5 <template lwc:if={contacts.data}>
6 <template for:each={contacts.data} for:item="contact">
7 <c-contact-list-item-bubbling
8 key={contact.Id}
9 contact={contact}>
10 </c-contact-list-item-bubbling>
11 </template>
12 </template>
13 </div>
14 </lightning-card>
15</template>コンポーネントの JavaScript ファイルで、メッセージチャネルと、メッセージチャネルを操作するために必要な Lightning Message Service 関数をインポートします。
1// lmsPublisherWebComponent.js
2import { LightningElement, wire } from "lwc";
3import getContactList from "@salesforce/apex/ContactController.getContactList";
4
5// Import message service features required for publishing and the message channel
6import { publish, MessageContext } from "lightning/messageService";
7import recordSelected from "@salesforce/messageChannel/Record_Selected__c";
8
9export default class LmsPublisherWebComponent extends LightningElement {
10 @wire(getContactList)
11 contacts;
12
13 @wire(MessageContext)
14 messageContext;
15
16 // Respond to UI event by publishing message
17 handleContactSelect(event) {
18 const payload = { recordId: event.target.contact.Id };
19
20 publish(this.messageContext, recordSelected, payload);
21 }
22}@wire(MessageContext) を使用して MessageContext オブジェクトを作成します。このオブジェクトは、Lightning Message Service を使用している Lightning Web コンポーネントに関する情報を提供します。@wire(MessageContext) アダプタを使用する場合、コンポーネントのライフサイクルイベントを操作する必要はありません。コンポーネントが破壊されると、Lightning Message Service 機能によって自動的に登録が解除されます。
handleContactSelect() メソッドは、公開するメッセージコンテンツを作成します。Lightning Message Service の publish() 関数は、メッセージコンテキスト、メッセージチャネルの名前、メッセージペイロードの 3 つのパラメータを取ります。ここでは、メッセージペイロードは JSON オブジェクト (recordId キーの値は event.target.contact.Id) です。
コンポーネントを DOM に添付してからでないと、@wire(MessageContext) でデコレートされたプロパティを使用できません。constructor() 関数では @wire(MessageContext) を使用できません。
Note
関連トピック
The Japanese Summer '24 guide is now live