我很难弄清楚如何通过中继在普通数组上进行突变。
我正在尝试向帖子添加新标签。在服务器端成功添加后,它不会在客户端更新。
我必须手动重新加载才能看到新标签。我都尝试过REQUIRED_CHILDREN
和this.props.relay.forceFetch()
,但无济于事。
另外,尝试FIELDS_CHANGE
过发帖。
GraphQL 架构:
Post {
id: ID!
text: String!
tags: [Tag!]!
}
Tag {
id: ID!
name: String!
}
AddTagToPostMutation:
static fragments = {
post: () => Relay.QL`
fragment on Post {
id
tags
}
`,
}
getMutation() {
return Relay.QL`mutation { addTagToPost }`;
}
getVariables() {
return {
name: this.props.tag.name,
};
}
getFatQuery() {
return Relay.QL`
fragment on AddTagToPostMutationPayload {
tag {
id
name
}
post {
id
tags
}
}
`;
}
getConfigs() {
return [{
type: 'REQUIRED_CHILDREN',
children: [Relay.QL`
fragment on AddTagToPostMutationPayload {
tag {
id
name
}
post {
id
tags
}
}
`],
}];
}
getOptimisticResponse() {
return {
tag: {
name: this.props.tag.name,
},
post: {
id: this.props.post.id,
},
};
}