在定义 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/