我使用react-query
库来获取数据。当用户发生变化时,如果以前的用户数据被自动删除&获取新数据,我会很高兴。
然而,这并没有发生,旧的userId被调用了几次,只有在1到2次重新关注应用程序之后,它才会用适当的新userId
来获取数据。这里是钩子:当我在getData
函数中记录一些信息时,我可以看到注销后旧的userId调用了它几次。
export default function useData() {
const {user} = useAuth();
const queryClient = useQueryClient();
useEffect(() => {
queryClient.removeQueries('data')
queryClient.invalidateQueries()
}, [user]);
return useQuery('data', () => getData(user!.uid), {
enabled: !!user,
})
}
有人知道当我的user
改变时如何删除所有数据吗?
发布于 2021-06-27 13:36:06
查询的所有依赖项都应该在查询键中,因为当键更改时,react-query会自动重新获取。这也在文档here中。
在您的示例中,这意味着添加用户id:
useQuery(
['data', user?.uid],
() => getData(user!.uid),
{
enabled: !!user,
}
)
为了清除旧的缓存条目,我可能会建议在查询上设置cacheTime: 0
,这意味着一旦最后一个观察者卸载,它们就会被垃圾收集。手动调用queryClient.removeQueries
也是一种选择。
https://stackoverflow.com/questions/68146305
复制相似问题