从缓存中删除查询而不重新获取反应查询

Hob*_*ire 19 javascript reactjs react-query

我以这种方式在我的反应应用程序中使用反应查询

    const { data, status } = useQuery(key, queryFunc, { staleTime: 1 * 60 * 1000 });
Run Code Online (Sandbox Code Playgroud)

我希望能够根据数据值使缓存中的某个键无效,基本上是当数据为空时,所以我添加了一个效果

useEffect(() => {
   if (data === null) {
     queryClient. invalidateQueries(key)
   }
}, [data])
Run Code Online (Sandbox Code Playgroud)

这种方法将导致请求循环,其中无效的查询将重新获取,获取 null 作为响应,效果执行并无效等等......

我希望能够从缓存中删除密钥而不需要重新获取,所以我不会陷入这个无限请求循环,一直在深入研究反应查询文档,但没有运气。无论如何,反应查询也有类似的情况,其中密钥需要从缓存中删除而不重新获取?

TkD*_*odo 25

我认为queryClient.removeQueries(key)会做你想做的事:https ://react-query.tanstack.com/reference/QueryClient#queryclientremovequeries

您能否详细说明一下您的用例?如果数据为空,为什么要从缓存中删除查询?

  • 我有一个使用典型的“useQuery('item', fetchItem)”设置的应用程序,当我在“item”中显示数据时,一切正常。但我注意到,当我注销并使用新用户登录时,在加载新数据时,旧用户的旧数据仍然存在一秒钟,我想要一种方法来保证在注销或页面更改时删除这些数据。 .. (4认同)

Anj*_*tam 8

从 V4(TanStack 查询)

从缓存中删除特定查询

queryClient.removeQueries({ queryKey: QUERY_KEY });
Run Code Online (Sandbox Code Playgroud)

从缓存中删除所有查询

queryClient.removeQueries();
Run Code Online (Sandbox Code Playgroud)