因此,我正在从apollo客户端文档中学习突变,并且在执行突变后遇到了更新客户端缓存的过程。是否有必要按以下说明使用writeFragment:https://www.apollographql.com/docs/react/data/mutations/#making-all-other-cache-updates?
因为我可以通过扩展现有数组并添加由update函数返回的'addTodo'对象(至少是我对redux的处理方式)来做到这一点
我的更新功能如下:
update(cache, { data: { addTodo } }) {
cache.modify({
fields: {
todos(existingTodos = []) {
return [...existingTodos, addTodo];
}
}
});
}
我在这里想念东西吗?
答案 0 :(得分:1)
与 writeQuery
和 writeFragment
一样,modify
会触发所有依赖于修改字段的活动查询的刷新(除非您覆盖此行为)。
与 writeQuery
和 writeFragment
不同,modify
绕过您定义的任何合并函数,这意味着字段始终会被您指定的值完全覆盖。
您还可以使用 writeFragment
添加新字段。
client.writeFragment({
id: '5',
fragment: gql`
fragment myTodo on Todo {
completed
}
`,
data: {
completed: true,
},
});
参考:https://www.apollographql.com/docs/react/caching/cache-interaction/#cachemodify 参考:https://github.com/apollographql/apollo-client/issues/6922