在定义 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 中包含字段?

使用-使用:我们可以重用相同的更改来更新任何字段并仅获取该字段作为响应,而不是使用单独的 muttaions 来更新类型的每个字段。这样做使我们能够减少有效载荷。

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

最佳答案

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

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

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

关于relayjs - 中继 : Conditionally include fields in mutation's fat query,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37272323/

10-11 03:24