我有一个测试应用,可以订阅待办事项列表。但是我添加的新todo变异也乐观地更新了UI。 问题是现在正在刷新整个反应视图,我不知道为什么。
这是罪魁祸首,发生在我运行此突变时:
export default graphql(addItem, {
options: {
fetchPolicy: 'cache-and-network'
},
props: props => ({
onAdd: item =>
props.mutate({
variables: item,
optimisticResponse: {
__typename: 'Mutation',
addItem: { ...item, __typename: 'Item' }
},
update: (proxy, { data: { addItem } }) => {
let data = proxy.readQuery({ query: listItems });
data.listItems.items.push(addItem);
proxy.writeQuery({ query: listItems, data });
}
})
})
})(AddItem);
答案 0 :(得分:0)
事实证明,在没有所有查询字段(在我的情况下是由服务器添加“我创建的”)的情况下,对项进行本地变异会导致整个查询变异失败,但会无声无息。有一个解决方法:https://github.com/apollographql/apollo-client/issues/3267
希望这可以帮助其他人入门!