【问题标题】:How to prevent react-query from fetching initially but enables refetching?如何防止 react-query 最初获取但启用重新获取?
【发布时间】:2021-06-19 17:54:06
【问题描述】:

我正在使用 react-query v3.13 从 API 获取数据。
我想要做的是定期从某个点(例如,单击开始按钮时)获取 API,而不是从调用 useQuery 时开始。

我尝试了以下方法。

  • enabled 属性设置为false 以禁用自动查询,但它也会禁用重新获取。
    我找不到将enabled 属性重新启用/设置为true 的方法。而且我不得不自己使用setTimeout定期重新获取。
  • enabled 属性保留为true,但我找不到禁用初始提取的方法。

有什么合适的方法吗?

【问题讨论】:

  • 我记得以前的版本有forceFetchOnMount属性,但是在版本3中它被refetchOnMount替换了。

标签: javascript reactjs fetch react-query swr


【解决方案1】:

如果您将enabled 选项硬编码为false,您仍然可以使用从useQuery 返回的refetch 方法强制触发提取。但是查询仍然会被禁用,所以没有后台更新。

如果你想要一个被禁用但在调用函数时启用的惰性,最好的方法是使用本地状态的 useQuery 的简单抽象:

const useLazyQuery = (key, fn, options) => {
  const [enabled, setEnabled] = useState(false)
  return [() => setEnabled(true), useQuery(key, fn, { ...options, enabled })]
}

【讨论】:

  • 是否有类似的使用queryClient
  • 我认为您可以禁用查询并仍然执行queryClient.refetchQueries(key) - 这类似于从useQuery 返回的refetch 方法
猜你喜欢
  • 1970-01-01
  • 2023-01-30
  • 2020-08-18
  • 1970-01-01
  • 2021-09-16
  • 2020-05-18
  • 2021-12-08
  • 2022-09-23
  • 2010-09-08
相关资源
最近更新 更多