JSSアプリにおける統合GraphQL

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

統合GraphQLでは、レイアウトサービスが特定のコンポーネントに対して返すレイアウトデータ形式を、GraphQLクエリの結果として変更できます。つまり、フロントエンドコンポーネントに必要なデータを定義するGraphQLクエリを定義し、そのクエリからプロパティ(Reactコンポーネントのprops.fieldsなど)としてデータを受け取ることができます。これにより、受け取るデータをコントロールでき、子項目やCRMデータなどの高度なデータソースが必要な場合にはGraphQLの力を活用できます。

!重要Sitecore Accelerateレシピ「 コンポーネント固有のデータの取得 」には、コンポーネント固有のデータ取得に関する追加の文脈が含まれており、使用する方法を選ぶ際に考慮すべき点も含まれています。

コンテンツエディターでは、統合GraphQLクエリがGraphQL GraphQLフィールドのレンダリングに付加されており、以下の2つのLink ListおよびTitleコンポーネントの例に示されています。

A Link List component rendering in Content Editor, displaying a sample integrated GraphQL query.
A Title component rendering with another sample integrated GraphQL query.

以下の場合に 統合されたGraphQLの使用 を推奨します:

  • あなたのコンポーネントはGraphQLスキーマ内のデータソーステンプレートフィールド以上のデータを必要とします。
  • データソーステンプレートには、レンダリングしたくない追加のフィールドが含まれています。
  • Apolloのようなクライアント側GraphQLライブラリは使いたくありません。統合型GraphQLはJSS以外の依存関係を必要としません。

以下の場合、統合GraphQLの使用を避ける ことをお勧めします:

  • コンポーネントはコンテンツテンプレートのフィールドデータのみを使用します。デフォルトのレイアウトデータ出力で十分で、GraphQLを必要としません。

  • あなたのGraphQLクエリはパフォーマンスが良くありません。例えば、複数のREST APIコールを舞台裏で集約します。統合GraphQLは、すべてのレイアウトクエリが完了するまでアプリのレンダリングをブロックします。

    初期レイアウトレンダリング後まで長時間実行されるクエリを延期するために 、代わりにConnected GraphQLを使う ことをお勧めします。

  • コンポーネントは状態の変化に応じて追加のGraphQLクエリを発行しなければなりません。統合クエリはレイアウトデータが読み込まれた場合にのみ実行されます。

  • コンポーネントはミューテーション(更新)やサブスクリプション(リアルタイムデータ)を実行しなければなりません。統合されたGraphQLでは、クエリのみ実行できます。

  • ページ付けやカーソル(例えばpageInfo.endCursor)を使う必要があります。

    統合されたGraphQLクエリは、プレビューエンドポイントに対して公開時に実行されます。カーソル値は動的かつエンドポイント固有のため、同じクエリでも公開時と実行時に異なるカーソルを返すことがあります。

    このユースケースでは代わりにConnected GraphQLの使用 をお勧めします。

統合GraphQLクエリを使用する場合、defaultおよびjssレイアウトサービス構成において、$datasource、 $contextItem、$languageの値を自動で注入します。

この記事を改善するための提案がある場合は、 お知らせください!