zaki-yama

zaki-yama's reading list

2021-06-08

ひとこと

IE11 サポート終了のお知らせ、Salesforce Live in Japan などなど。

読んだ

📝 : 下の方に内容メモあり

☁︎ Salesforce

Web, Frontend

Rust, WebAssembly

その他

読みたい

書いた

Stale

読んだ記事のメモ

Inter-Component Communication Patterns for Lightning Web Components | Salesforce Developers Blog

コンポーネント間の 3 つの通信(communication)パターンを

  1. 親から子
  2. 子から親
  3. 親子関係のない他コンポーネント

の 3 つに分類し、各パターンにおける通信方法を説明。

1. 親から子 (Passing data down the component hierarchy)

3 つある

  • public プロパティ
    • 子コンポーネントのクラスのプロパティに @api デコレータをつける
    • 値が変更されたときにカスタムロジックを実行するとかはできない
  • public な getter/setter
    • 使い勝手は public プロパティとほぼ一緒だが、カスタムロジックを仕込める
    • そのままでは永続性を提供しない(値が保持されない) -> _ prefix つきの private なプロパティに内部的に値を保持しておくのがよくあるパターン
  • public なメソッド
    • public プロパティや getter/setter と異なり、HTML タグ内で使うことはできない。JS から呼び出す必要がある

2. 子から親 Passing data up the component hierarchy

3. 親子関係のないコンポーネント Passing data to components that share no common ancestry

  • Lightning Message Service か pubsub module を使う
  • Lightning message service
    • LWC, Aura, Visualforce 間のコミュニケーションにも使える
    • 詳細はここには書かないけど、3 つのキーとなるステップがある
      1. LightningMessageChannel メタデータ型でメッセージチャンネルを宣言する
      2. @salesforce/messageChannelpublish() 関数でメッセージを publish する
      3. @salesforce/messageChannelsubscribe() 関数でメッセージを subscribe する
  • pubsub module
    • LMS をサポートしてないコンテナでの最終手段として使用する必要がある
    • 公式にはサポートしておらず積極的なメンテもしてない