【发布时间】:2021-02-13 15:15:20
【问题描述】:
使用 Apollo Client 3 并删除所有查询结果,而不管参数如何。像这样尝试过;
cache.evict({
id: "ROOT_QUERY",
fieldName: "countries"
});
cache.gc();
尽管没有从缓存中删除,__APOLLO_CLIENT__.cache.data 仍然在缓存中保留所有结果。
另一方面,我可以删除单个 Country 对象。
你可以在这里看到它sandbox
【问题讨论】:
-
重置商店就是为了这个
-
找不到任何样本!...
-
我只想删除特定查询的结果,而不是清除整个商店。
-
好的,我稍微研究了一下这个问题......缓存条目被删除(
console.log("cache", cache.data.data);),-gc()没关系......但问题在于钩子,视图不是当“数据”被清除时重新渲染......恕我直言,这是一个阿波罗问题,因为更改被传播(this.broadcastWatches();调用),“数据”应该再次设置为未定义......解决方法? writeQuery 有大量数据? -
感谢@xadm。你是对的,它是关于
useLazyQuery和cache.evict({ id: "ROOT_QUERY", fieldName: "countries" });在这个cache.evict 之后,apollo 客户端无法协调查询和缓存,所以它再次查询。您认为我们可以使用相同的useLazyQuery钩入输出页面和不同的获取策略来克服这个问题吗?
标签: reactjs graphql apollo-client