删除 Apollo 3 上的缓存

Posted

技术标签:

【中文标题】删除 Apollo 3 上的缓存【英文标题】:Delete cache on Apollo 3 【发布时间】:2021-06-07 15:56:12 【问题描述】:

您好,我正在制作下一个 js 应用程序,我正在使用 Apollo Client v3 从 GraphQL API 中获取数据,但我遇到了一些问题。 我希望当用户按下按钮将角色从用户更改为管理员或反之亦然时删除所有缓存,以便应用程序仅显示新内容。提前致谢!

【问题讨论】:

搜索'reset apollo cache [on logout]" 【参考方案1】:

Apollo 客户端使用 InMemory Cache 来存储数据。

有几种方法可以在操作(突变)后更新缓存:

如果突变涉及与查询相同的实体,您可以使用更新突变自动更新它,该更新突变返回修改后的实体 ID 和新数据。 https://www.apollographql.com/docs/react/data/mutations/#updating-a-single-existing-entity

否则,您可以使用update 回调将缓存数据配置为手动更新 https://www.apollographql.com/docs/react/data/mutations/#making-all-other-cache-updates

如果你不想直接修改缓存而是重新获取一些查询,你可以使用 refetchQuery 回调 https://www.apollographql.com/docs/react/caching/advanced-topics/#rerunning-queries-after-a-mutation

【讨论】:

我没有进行突变,我有相同的查询,但根据用户的角色有不同的变量。

以上是关于删除 Apollo 3 上的缓存的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 客户端从缓存中删除项目

带有命名空间查询的 Apollo Client 3.0 缓存

反应应用程序上的 Apollo 客户端缓存问题

删除带有突变的项目时如何正确修改Apollo缓存

使用 writeQuery() 更新 Apollo 客户端上的缓存

如何为 Apollo GraphQL 客户端禁用 InMemoryCache?