コンポーネントの構成
子のプロパティの設定
データフロー
子でのメソッドのコール
子のスプレッドプロパティ
スロットにマークアップを渡す
スロットとデータの比較
連動関係を参照
モバイル対応のコンポーネント
コードが複雑になり、思わぬ副作用が発生することを回避するには、データが親から子に一方向に流れるようにする必要があります。
コンポーネントで @api を使用してフィールドをデコレートして、それを公開プロパティとして公開する場合、フィールドを初期化するときにのみ値が設定されます。フィールドが初期化されたら、オーナーコンポーネントでのみ値が設定されます。コンポーネントでは、参照のみとして渡される値が処理されます。所有者コンポーネントが提供するプロパティ値の変異をトリガするために、子コンポーネントは親にイベントを送信できます。親がデータを所有している場合、親はプロパティ値を変更でき、これは一方向データバインドで子コンポーネントに伝達されます。
コンポーネントに渡される非プリミティブ値 (オブジェクトや配列など) は参照のみです。コンポーネントは、オブジェクトまたは配列のコンテンツを変更できません。コンポーネントがコンテンツを変更しようとすると、ブラウザコンソールにエラーが表示されます。データを変更するには、変更するオブジェクトの浅いコピーを作成します。
所有者コンポーネントが提供するプロパティ値の変異をトリガするために、コンポーネントは所有者にイベントを送信する必要があります。
参照のみオブジェクトを理解するには、lwc.dev (Lightning Web Components のオープンソース開発者サイト) でドキュメントを参照したり、コードを試したりしてください。
プロパティには、オブジェクトデータ型ではなく、プリミティブデータ型を使用することをお勧めします。上位コンポーネントの複雑なデータ構造をスライスして、コンポーネントの子にプリミティブ値を渡します。
プリミティブ値を使用した方がよい理由はいくつかあります。
@api プロパティが必要です。オブジェクトまたは配列を受け入れるには、形状を指定するドキュメントが必要です。オブジェクトの形状が変更された場合、コンシューマは中断します。table 要素では、tr 要素と td 要素が使用されます。HTML で定義できるのは、プリミティブ型のみです。たとえば、<table data={...}> は、HTML の値ではなく、Lightning Web Components 専用の値です。The Japanese Summer '24 guide is now live