【问题标题】:Unable to refetch query using 'id' inside onSuccess() callback of useMutation in react-query 3.6.0无法使用 react-query 3.6.0 中 useMutation 的 onSuccess() 回调中的“id”重新获取查询
【发布时间】:2021-02-14 14:24:55
【问题描述】:

我正在使用QueryCache.refetchQueries 重新获取 ID 为 'fetchProducts' 的查询,但它失败了。????

然后我看到 react-query 迁移到 3.0 版并进行了一些更改。我在文档中看到了一个重新获取查询代码示例queryClient.invalidateQueries('fetchProducts') 并使用了它,但仍然需要刷新页面才能查看最新更改。

react-devtools 截图:

(这表明查询保存在缓存中,id 为 fetchProducts,但在突变成功响应后无法重新获取)

【问题讨论】:

  • 您使用的是“正确的”queryClient - 我的意思是 - 您是通过以下方式检索到的:const queryClient = useQueryClient() 吗?另一件事:您的屏幕截图从字面上显示查询当前正在获取(由右上角的蓝色 1 和蓝色 fetching 徽章表示),所以我认为您的查询可能正在正确地重新获取。也许它出错或有重试,因此需要更长的时间。您是否检查了您的网络选项卡中的传出请求?
  • 当我离开浏览器窗口并返回时,它只会重新获取最新的项目。
  • 这不能回答我的问题:queryClient 从哪里来的时候:queryClient.invalidateQueries('fetchProducts')?

标签: reactjs frontend react-query


【解决方案1】:

如果您使用 refetch 功能手动获取。任何 invalidateQueries 和 reftchQueries 都将被忽略。创建查询时,您必须手动调用来自 useQuery 的 refetch 函数。

来源:https://react-query.tanstack.com/guides/disabling-queries

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2021-09-16
    • 2020-08-15
    相关资源
    最近更新 更多