JSS Next.jsアプリでのコンポーネント レベルのデータ取得
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Next.jsは、各レンダリング フォームのページ レベルのデータ フェッチ戦略を使用して、ビルド時または各リクエストでページをプリレンダリングできます。
コンポーネント・レベルでコンポーネント固有のデータをフェッチする場合は、静的生成のgetStaticProps (SG) またはサーバー・サイド・レンダリング (SSR) のgetServerSideProps関数を実装およびエクスポートすることにより、ページ・レベルのデータ・フェッチと同様のメカニズムを使用できます。
コンポーネント レベルのgetStaticProps関数とgetServerSideProps関数にシークレットまたは機密情報を含めると、その情報は開発モードのクライアント側バンドルにのみ含まれます。
JSSアプリでのコンポーネント レベルのデータ取得のしくみのデモについては、次のビデオをご覧ください。
コンポーネント・レベルのデータ・フェッチは、エラー・ページでの動作を意図したものではありません。
ComponentPropsServiceクラス
SitecorePagePropsFactoryクラスは、データの取得が必要なコンポーネントを識別するのに役立つComponentPropsServiceクラスのインスタンスを使用します。ComponentPropsServiceクラスは、NPMパッケージ @sitecore-jss/sitecore-jss-nextjsによって提供されます。
ComponentPropsServiceクラスは、次のパラメーターを受け入れます。
-
moduleFactory - componentName引数を使用してNext.jsコンポーネント モジュールを返す関数。 moduleFactory関数の定義はsrc/temp/componentBuilderファイルにあります。存在しない場合は、scripts/bootstrap.tsを実行して生成します。
-
layoutData - ページのレイアウトサービスデータ。
-
context - Next.js SSGまたはSSRコンテキスト。
ComponentPropsServiceクラスは、レイアウト サービス データを走査し、すべてのレンダリングを確認します。データのフェッチが必要なコンポーネントを見つけるために、サービスはrendering.componentNameプロパティを使用して、src/temp/componentBuilderファイル内のコンポーネント登録の一覧に対してコンポーネントを監視します。
コンポーネントが関数getStaticPropsまたはgetServerSidePropsを定義してエクスポートする場合、ComponentPropsServiceクラスは関数を実行します。すべての副作用を適用した後、コンポーネントデータをcomponentPropsオブジェクトに { rendering.uid: data }の形式で格納します。
たとえば、次のコンポーネントはデータフェッチ関数を定義し、挿入されたコンポーネントのpropsを表示します。
この例のコンポーネントには、getStaticProps関数とgetServerSideProps関数の両方の実装が含まれています。実際のコンポーネントでは、選択したレンダリング モードに応じて、そのうちの1つだけを定義する必要があります。