1

私の CMS は、それぞれが独自のノードタイプを持つノードのリストを返します。ノードタイプごとに、対応する GraphQL タイプが定義されています。

type getContent {
  content: [ContentNode]
}

次のようなクエリが必要です。

{
  content{
    contentType
    properties {
       ${ContentType.getFragment('content', type: $contentType???)}
    }
  }
}

ContentType は、提供された型変数に基づいて正しいフラグメント定義を返します。しかし、どうすれば$contentType親の結果から取得できますか?

4

1 に答える 1

2

親の実際の値に依存するフラグメントを持つことはできません。これは、クエリ リクエストが実際にサーバーに対して行われる前にフラグメントが構成されるためです。これを処理するには 2 つの異なる方法があります。1 つは変数に基づいてフラグメントを変化させる方法で、もう 1 つはコンポーネント内でインターフェイスと型付きフラグメントを使用する方法です。

変数の使用例を示す良い答えは次のとおりです。React-NativeでRelayを使用する場合の条件付きフラグメントまたは埋め込みルートコンテナ

インターフェイス ソリューションの場合、ContentNode に「ContentNode1」や「ContentNode2」などの実装を備えたインターフェイスがある場合は、次のようなことができます。

{
  content {
    ${ContentType.getFragment('content')}
  }
}

そしてあなたの ContentType コンポーネントで

fragment on ContentNode {
   contentType
   someOtherCommonField
   ... on ContentNode1 {
     someContent1Field
   }

   ... on ContentNode2 {
     someContent2Field
   }
}
于 2016-04-18T11:43:19.660 に答える