2016-05-17 21 views
4

リレーコンテナのフラグメントを定義する際、条件付きでフィールドを含めるかスキップすることができます。 For exampleの場合、showComments変数がtrueの場合のみ、次のコードにはcommentsが含まれます。リレー:突然変異のファットクエリーにフィールドを条件付きで含める

Relay.createContainer(Story, { 
    initialVariables: { 
    numCommentsToShow: 10, 
    showComments: false, 
    }, 
    fragments: { 
    story: (variables) => Relay.QL` 
     fragment on Story { 
     comments(first: $numCommentsToShow) @include(if: $showComments) { 
      edges { 
      node { 
       author { name }, 
       id, 
       text, 
      }, 
      }, 
     }, 
     } 
    `, 
    } 
}); 

どのように我々は条件付きでmutation's fat query内のフィールドを含めることができますか?

使用用途:代わりに、タイプの各フィールドを更新するために、別々のmuttaionsを有するので、私たちは、任意のフィールドを更新し、応答にのみそのフィールドを取得するために同じ変異を再利用することができます。そうすることでペイロードを減らすことができます。

この質問は別の質問Reusing a Mutation in Relayによって動機付けられています。

答えて

0

あなたが実際にFatQuery上の文字列補間を使用することができます。

getFatQuery() { 
    return Relay.QL` 
    fragment on EditCommentPayload { 
     comment { 
     ${this.props.fields.join(',')} 
     } 
    } 
    `; 

は、それは少し抗GraphQLようだが、残念ながら脂肪クエリ(related issue)のための変数が存在しません。

+0

興味深い!しかし、それは常に動作しないようです(ref:https://github.com/facebook/relay/issues/1046#issuecomment-241073226)。 –

関連する問題