提问人:Bohdan Romanovich 提问时间:3/30/2023 更新时间:3/30/2023 访问量:1154
如何使 Apollo GraphQL 的整个缓存失效(不适用于一个特定查询) onclick
How to invalidate whole cache for Apollo GraphQL (not for one specific query) onclick
问:
我需要的是强制页面上的所有查询在单击一个按钮后重新获取数据。
我在这里找到了一个特定查询的灵魂(https://www.apollographql.com/docs/react/caching/advanced-topics/),但目前尚不清楚我是否可以一次对所有查询执行此操作。
答:
0赞
Bergi
3/30/2023
#1
就在您已经链接的页面上,有 https://www.apollographql.com/docs/react/caching/advanced-topics/#resetting-the-cache
重置缓存
有时,您可能希望完全重置缓存,例如当 用户注销。为此,请调用 。此方法 是异步的,因为它还会重新提取任何活动查询。
client.resetStore
import { useQuery } from '@apollo/client'; function Profile() { const { data, client } = useQuery(PROFILE_QUERY); return ( <Fragment> <p>Current user: {data?.currentUser}</p> <button onClick={async ()=>client.resetStore()}> Log out </button> </Fragment> ); }
要在不重新获取活动查询的情况下重置缓存,请使用 代替 .
client.clearStore()
client.resetStore()
评论
client.refetchQueries({include:“all”})
重新获取查询可能比使缓存失效更容易、更合适,尽管两者都是一种选择。