中继:有条件地在突变的胖查询中包含字段
Posted
技术标签:
【中文标题】中继:有条件地在突变的胖查询中包含字段【英文标题】:Relay: Conditionally include fields in mutation's fat query 【发布时间】:2016-09-13 07:54:15 【问题描述】:在定义 Relay 容器的片段时,我们可以有条件地包含或跳过字段。 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 中包含字段?
使用-使用:我们可以重用相同的突变来更新任何字段并仅获取该字段作为响应,而不是使用单独的突变来更新类型的每个字段。这样做使我们能够减少有效负载。
这个问题是由另一个问题Reusing a Mutation in Relay引起的。
【问题讨论】:
【参考方案1】:您实际上可以在 FatQuery 上使用字符串插值:
getFatQuery()
return Relay.QL`
fragment on EditCommentPayload
comment
$this.props.fields.join(',')
`;
这似乎有点反 GraphQL,但不幸的是胖查询没有变量 (related issue)。
【讨论】:
有趣!但是,它似乎并不总是有效(参考:github.com/facebook/relay/issues/1046#issuecomment-241073226)。以上是关于中继:有条件地在突变的胖查询中包含字段的主要内容,如果未能解决你的问题,请参考以下文章
中继突变。脂肪查询。询问 REQUIRED_CHILDREN 中的所有字段
删除时出现中继错误:RelayMutationQuery:胖查询中的字段名称无效