调用 refetch 方法时有没有办法阻止抓取?反应查询

Is there a way to prevent fetching when `refetch` method get called? react-query

我有自定义的抓取挂钩,它使用 useQuery - 来自反应查询。我如何根据我提供的 boolean 道具来防止 fetching/refetching。 目前我正在使用 { enabled: allowedToFetch } 但这并不能阻止当我使用来自反应查询的 refetch 方法时获取。

根据设计,从 useQuery 返回的 refetch 执行无条件提取,甚至绕过 enabled

这里有很好的记录:https://react-query.tanstack.com/guides/disabling-queries

这是必要的,以便您可以通过设置 enabled: false 和使用 refetch().

选择退出智能重新获取并进入“手动”模式

queryClient.refetchQueriesqueryClient.invalidateQueries 尊重 enabled,所有智能重新获取也是如此。

问题是:为什么您在调用 refetch 时有一个禁用的查询,但 希望它实际重新获取?用例是什么?

如果条件是:enabled: allowedToFetch,我会:

.) 在相同条件下包装 refetch 调用:

if (allowedToFetch) {
  refetch()
}

.) 或者使用本地状态来驱动查询(首选方案):

const [allowedToFetch, setAllowedToFetch] = useState(false)

useQuery(key, fn, { enabled: allowedToFetch })

现在您需要做的就是调用:

setAllowedToFetch(true)

这将启用查询,react-query 将完成剩下的工作。