突变后更新缓存时是否需要使用“ writeFragment”?

时间:2020-08-31 18:44:44

标签: graphql apollo-client

因此,我正在从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];
          }
        }
      });
    }

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:1)

<块引用>

writeQuerywriteFragment 一样,modify 会触发所有依赖于修改字段的活动查询的刷新(除非您覆盖此行为)。

<块引用>

writeQuerywriteFragment 不同,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

相关问题