调用 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.refetchQueries
和 queryClient.invalidateQueries
尊重 enabled
,所有智能重新获取也是如此。
问题是:为什么您在调用 refetch
时有一个禁用的查询,但 不 希望它实际重新获取?用例是什么?
如果条件是:enabled: allowedToFetch
,我会:
.) 在相同条件下包装 refetch 调用:
if (allowedToFetch) {
refetch()
}
.) 或者使用本地状态来驱动查询(首选方案):
const [allowedToFetch, setAllowedToFetch] = useState(false)
useQuery(key, fn, { enabled: allowedToFetch })
现在您需要做的就是调用:
setAllowedToFetch(true)
这将启用查询,react-query 将完成剩下的工作。
我有自定义的抓取挂钩,它使用 useQuery
- 来自反应查询。我如何根据我提供的 boolean
道具来防止 fetching/refetching。
目前我正在使用 { enabled: allowedToFetch }
但这并不能阻止当我使用来自反应查询的 refetch
方法时获取。
根据设计,从 useQuery
返回的 refetch
执行无条件提取,甚至绕过 enabled
。
这里有很好的记录:https://react-query.tanstack.com/guides/disabling-queries
这是必要的,以便您可以通过设置 enabled: false
和使用 refetch()
.
queryClient.refetchQueries
和 queryClient.invalidateQueries
尊重 enabled
,所有智能重新获取也是如此。
问题是:为什么您在调用 refetch
时有一个禁用的查询,但 不 希望它实际重新获取?用例是什么?
如果条件是:enabled: allowedToFetch
,我会:
.) 在相同条件下包装 refetch 调用:
if (allowedToFetch) {
refetch()
}
.) 或者使用本地状态来驱动查询(首选方案):
const [allowedToFetch, setAllowedToFetch] = useState(false)
useQuery(key, fn, { enabled: allowedToFetch })
现在您需要做的就是调用:
setAllowedToFetch(true)
这将启用查询,react-query 将完成剩下的工作。