メッセージチャネルの登録および登録解除
メッセージチャネルでメッセージの登録および登録解除を行うには、メッセージチャネルを @salesforce/messageChannel
で範囲設定されたモジュールから Lightning Web コンポーネントにインポートします。Lightning Message Service の subscribe()
関数と unsubscribe()
関数をコールします。
github.com/trailheadapps/lwc-recipes リポジトリの lmsSubscriberWebComponent
では、メッセージチャネルへの登録、およびチャネルからの登録解除の方法が示されます。この例では、「メッセージチャネルでの公開」のパブリッシャーコンポーネントを使用します。
パブリッシャーコンポーネントから取引先責任者を選択すると、選択したレコード ID が Record_Selected__c
メッセージチャネルに公開されます。
登録者コンポーネントの HTML は、公開されたメッセージに反応し、メッセージペイロードを介してレコード ID が提供された取引先責任者のデータを表示します。
コンポーネントの JavaScript で、lightning/messageService
から登録に必要な Message Service の機能をインポートします。@salesforce/messageChannel
から Record_Selected__c
メッセージチャネルをインポートします。
@wire(MessageContext)
を使用してコンテキストオブジェクトを作成します。このオブジェクトは、Lightning Message Service を使用している Lightning Web コンポーネントに関する情報を提供します。コンポーネントを DOM に添付してからでないと、@wire(MessageContext)
でデコレートされたプロパティを使用できません。
subscribeToMessageChannel()
関数は、subscription
が null かどうかを確認します。subscription が null の場合、Lightning Message Service の subscribe()
メソッドをコールして subscription
に割り当てます。subscribe()
メソッドは、メッセージコンテキスト、メッセージチャネルの名前、公開されたメッセージを処理するリスナーメソッドの 3 つの必須パラメータを取ります。リスナーメソッドが呼び出されると、メッセージを handleMessage()
に渡します。handleMessage()
は、受信した JSON メッセージペイロードから recordId
プロパティを抽出します。次に、レコード ID と一致する取引先責任者の関連情報で HTML テンプレートが更新されます。
メッセージチャネル上のメッセージをアプリケーション内の任意の場所から受信するには、subscribe()
メソッドの 4 番目のパラメータ (省略可能) として { scope: APPLICATION_SCOPE }
を渡します。「Message Service の範囲の定義」を参照してください。
Lightning Message Service からのメッセージの受信を停止するには、登録参照を渡して unsubscribe()
をコールします。subscription
オブジェクトには、解除する登録への参照が含まれます。次の例では、unsubscribeToMessageChannel()
をコールします。これにより、unsubscribe()
がコールされて、subscription
が null に設定されます。
LightningElement
でないサービスコンポーネントを作成する場合、@wire(MessageContext)
を使用して MessageContext
オブジェクトを作成することはできません。代わりに、createMessageContext()
メソッドと releaseMessageContext()
メソッドを lightning/messageService
からインポートします。createMessageContext()
を使用してコンテキストオブジェクトを作成し、それを messageContext
などの項目に割り当てます。次に、messageContext
を subscribe()
メソッドに渡します。コンテキストはサービスコンポーネントに対して自動的に開放されません。releaseMessageContext(messageContext)
をコールして、コンポーネントのメッセージコンテキストに関連付けられた登録を削除します。
関連トピック