Мне трудно понять, как делать мутации в обычном массиве через реле.
Я пытаюсь добавить новый тег к сообщению. Он не обновляется на стороне клиента после успешного добавления на стороне сервера.
Я должен вручную перезагрузить, чтобы увидеть новый тег. Я пробовал и REQUIRED_CHILDREN
, и this.props.relay.forceFetch()
, но безрезультатно.
Кроме того, попробовал FIELDS_CHANGE
для публикации.
Схема GraphQL:
Post {
id: ID!
text: String!
tags: [Tag!]!
}
Tag {
id: ID!
name: String!
}
Аддтегтопостмутация:
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,
},
};
}