メッセージチャネルでの公開
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 ハンドラが呼び出され、メッセージがメッセージチャネルに公開されます。
コンポーネントの JavaScript ファイルで、メッセージチャネルと、メッセージチャネルを操作するために必要な Lightning Message Service 関数をインポートします。
@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) を使用できません。
関連トピック