中继:有条件地包括变异胖查询中的字段

时间:2016-05-17 09:32:39

标签: relayjs

在定义Relay容器的片段时,我们可以有条件地包含或跳过字段。 For example,仅当comments变量为showComments时,以下代码才会包含true

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中添加字段?

use-use:我们可以重复使用相同的变异来更新任何字段,而不是使用单独的muttaions来更新某个类型的每个字段,而只获取响应中的那个字段。这样做可以减少有效负载。

此问题的动机是另一个问题Reusing a Mutation in Relay

1 个答案:

答案 0 :(得分:0)

你可以在FatQuery上实际使用字符串插值:

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

似乎有点反GraphQL,但遗憾的是胖查询没有变量(related issue)。