JSS Next.jsアプリでのプレースホルダの操作
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
JSS Next.jsアプリでプレースホルダーを使用するには、いくつかの方法があります。
JSSアプリのプレースホルダーに関するガイドを読んで、プレースホルダーとは何か、どのように機能するかを理解することをお勧めします。
基本的なプレースホルダー手法の使用
基本的なプレースホルダー手法の使用
コンポーネントにプレースホルダーを追加する最も一般的な方法は、Placeholderコンポーネントを使用することです。
Placeholderコンポーネントの場合:
-
nameは、公開するプレースホルダのキーです。
-
renderingは以下を表すことができます。
-
現在Sitecoreが提供するレイアウト/ルート データ。
-
別のコンポーネント内からプレースホルダーを公開する場合は、親コンポーネント データ。
-
高次コンポーネント手法の使用
高次コンポーネント手法の使用
高次コンポーネント (HOC) パターンを使用すると、プレースホルダー内のコンポーネントの配列を取得し、プレースホルダーを公開するコンポーネントにプロパティとして挿入できます。
component配列を出力すると、アプリケーションはコンポーネントを出力した場所にレンダリングします。
HOC手法を使用してプレースホルダを出力すると、プレースホルダにはラッピング コンポーネントがなく、インラインでレンダリングされます。HOCアプローチは、based on a specific component hierarchyライブラリを使用している場合に便利です。基本的なプレースホルダ手法を使用すると、すべての子コンポーネントがコンポーネントツリーでその下にレンダリングされます。
たとえば、次の構造でreact-fullpageライブラリを使用する場合です。
ライブラリは、次のコンポーネント階層を想定しています。
ただし、基本的なプレースホルダ手法を使用してSectionコンポーネントを追加する場合は、次のようになります。
結果のコンポーネント階層は次のようになります。
HOCベースのプレースホルダーを使用すると、インライン コンポーネントまたはコンポーネント変換を使用して、よりフラットなコンポーネント階層を実現できます。
インラインコンポーネント
ライブラリがコンポーネントのラッピングの単一レイヤーを防止しない場合は、次のようなコンポーネント階層を取得します。
子コンポーネントをレンダリングコンポーネントに配置できます。例えば:
コンポーネントの変換
次のように、完全にフラットなコンポーネント階層を実現するには、次のようにします。
挿入されたプロパティが配列であることを利用し、map関数を使用してラッパーで子コンポーネントを変換できます。
子Sitecoreコンポーネントは、ラッピングにまったく気付かず、コンテンツのみをレンダリングして、この手法を使用するときに懸念事項を明確に分離できます。
例えば:
レンダリングpropsテクニックの使用
レンダリングpropsテクニックの使用
JSSは、高次コンポーネントの代替としてrender propsパターンをサポートしています。<Placeholder>コンポーネントのrenderプロパティを使用すると、上位コンポーネントと同じ方法でプレースホルダーコンテンツのレンダリングを引き継ぎ、動的プロパティを使用できます。
次の例は、コンポーネント配列を取得し、renderプロパティを使用してレンダリングする方法を示しています。
プレースホルダーのrender関数には、次の2つの省略可能な引数を使用できます。
-
propsパラメータは、<Placeholder>に渡されるプロパティのミラーです。
-
placeholderDataパラメータは、現在のプレースホルダーのレイアウト データを提供します。
直接プレースホルダーイントロスペクション手法
直接プレースホルダーイントロスペクション手法
コンポーネントの代わりにプレースホルダーのデータにアクセスできます。たとえば、タブなどのコンポーネントを2つの場所 (タブのタイトルとタブの内容) にレンダリングするコンポーネントの場合などです。プレースホルダ階層は大きなJavaScriptオブジェクトであるため、props.renderingを使用してトラバースし、子コンポーネントのデータと項目を検出できます。
プレースホルダーによるエクスペリエンスの向上
プレースホルダーによるエクスペリエンスの向上
プレースホルダーは、カスタムコンポーネントを使用して開発者/エディターのエクスペリエンスを向上させるためのオプションを提供します。基本的なプレースホルダ手法を使用する場合は、Placeholderコンポーネントプロパティを使用して、エラーや欠落しているJavaScript実装に対してプレースホルダがレンダリングするカスタムコンポーネントを構成できます。HOCパターンを使用する場合は、propsTransformerオプションを使用して、関数を使用して同じプロパティを挿入できます。
エラーコンポーネント
プレースホルダーでレンダリングエラーが発生した場合、プレースホルダーはプレースホルダーの内容の代わりにエラーコンポーネントを表示し、エラーの詳細をコンソールに記録します。このコンポーネントをカスタマイズするには、errorComponentプロパティを使用してカスタムコンポーネントを置き換えます。
欠落しているコンポーネントコンポーネント
プレースホルダーにcomponentFactory不明なレンダリング名が含まれている場合 (たとえば、バックエンド開発者がFooレンダリングを作成してページに追加するが、まだFoo.jsがない場合)、レンダリングはコンポーネントのmissingComponentComponentプロパティで定義されたMissingComponentコンポーネントに置き換えられます。デフォルトの実装は単純なメッセージですが、missingComponentComponentプロパティのカスタムコンポーネントを使用してカスタマイズできます。
非表示のレンダリングの処理
パーソナライゼーションルールでレンダリングが非表示になっている場合、レンダリングにJSS実装がない場合のエラーメッセージを防ぐために、レンダリングはHiddenRenderingコンポーネントに置き換えられます。コンポーネントを作成し、hiddenRenderingComponentプロパティを使用してプレースホルダに提供できます。