反应查询,查询不更新参数

时间:2021-06-26 21:17:00

标签: reactjs react-query

我使用 react-query 库来获取我的数据。 当用户发生变化时,如果自动删除以前的用户数据并获取新数据,我会很高兴。

这确实发生了,但不会发生,使用旧用户 ID 多次调用 api,并且只有在 1 或 2 次重新关注应用程序后,它才会使用适当的新 {{1} }. 这是钩子: 当我在 userId 函数中记录一些信息时,我可以看到它在注销后使用旧的 userId 被调用了几次。

getData

有人知道如何在我的 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, }) } 更改时删除所有数据吗?

1 个答案:

答案 0 :(得分:0)

您的查询的所有依赖项都应该在查询键中,因为当键更改时,react-query 会自动重新获取。这也在文档 here 中。

就您而言,这意味着添加用户 ID:

useQuery(
  ['data', user?.uid],
  () => getData(user!.uid),
  {
    enabled: !!user,
  }
)

为了清除旧的缓存条目,我可能会建议在您的查询中设置 cacheTime: 0,这意味着一旦最后一个观察者卸载它们就会被垃圾收集。手动调用 queryClient.removeQueries 也是一种选择。