0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

lightning/toast,platformShowToastEvent,toastContainerの使い分け

Posted at

GPTの回答で後日に整理する予定です。

  • lightning/platformShowToastEvent: いちばん基本。イベントを投げてトーストを表示する公式・推奨のやり方(標準ページ上のLWCならこれでOK)。
  • lightning/toastContainer: トーストを描画する“受け皿”。グローバルのコンテナが無い環境(独自LWR/スタンドアロンなど)や、表示位置をコンポーネント内で制御したい時に自分で置く。
  • lightning/toast: 単体トーストのベース要素(通常は直接使わない)。コンテナ内部で使われる下位コンポーネントで、一般的なLWCではShowToastEvent+(必要なら)toastContainerを使います。

使い分けの目安

  • Salesforce標準のレコードページ/アプリページ上のLWC:
    まずは lightning/platformShowToastEvent だけで十分(グローバルのトーストコンテナが自動で拾って表示)。
  • 独自のDOM環境でグローバルコンテナが無い(例: スタンドアロンLWR、特殊な埋め込み):
    親テンプレートに を1つ置く → その上で ShowToastEvent を dispatch。
  • 表示位置やライフサイクルをローカルに完結させたい:
    コンポーネントのテンプレートに を置いて、その影DOM内で完結させる。
  • lightning/toast を直接使うケース:
    ほぼ無し(コンテナが内部で使う要素)。通常は使わないのがベストプラクティス。
    最小サンプル
  1. 標準ページ(これだけでOK)
JS import { ShowToastEvent } from 'lightning/platformShowToastEvent';
this.dispatchEvent( new ShowToastEvent(
    { 
        title: '完了', 
        message: '保存しました', 
        variant: 'success', // success | info | warning | error 
        mode: 'dismissable' // dismissable | pester | sticky 
    }) );
  1. グローバルコンテナが無い/位置を制御したい
    HTML(親テンプレートのどこかに1つ)
<lightning-toast-container></lightning-toast-container>

JS(呼び出しは同じでOK)

this.dispatchEvent(new ShowToastEvent({ title: '...', message: '...', variant: 'success' }));

よくある注意点

  • variant/mode の値は厳密(小文字・余分な空白NG)。不正値や未設定は info(灰色)にフォールバックします。
    例: (value || '').trim().toLowerCase() で正規化してから渡すと安全。

  • すぐに Flow 終了/ナビゲーションを実行すると表示が崩れることがあります。トースト表示→数百ms遅延→終了/遷移が安定。

  • コンテナは影DOM単位で1つに。多重に置くと重複表示やスタイル競合の可能性。

  • Experience Cloud/モバイルではテーマにより色味が変わることがあります(期待色と見え方がずれる)。
    まとめ

  • 基本は lightning/platformShowToastEvent。

  • 必要なときだけ lightning/toastContainer をテンプレートに追加。

  • lightning/toast は原則使わない(内部実装向け)。
    既存の toastInLightningFlow でも、すでに ShowToastEvent を使っているので正しい方向です。variant が灰色に落ちる場合は、「値の正規化」と「後続処理の遅延(~300ms)」を入れると安定します。詳しい堅牢化コードが必要なら、そのまま適用できる差分もお渡しできます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?