首页 > 解决方案 > react-query:如果有错误,不要在间隔内重新获取

问题描述

我正在按时间间隔重新获取 API,但如果出现错误,我想停止它。

  const { status, data, error, isFetching } = useQuery(
    'todos',
    // only refetch if there is no error
    async () => {
      const res = await axios.get('/api/data')
      return res.data
    },
    {
      refetchInterval: intervalMs,
    }
  )

我可能可以将它存储status.isError在一个状态变量上,然后使用它,enabled但它看起来有点笨拙。通过文档,我找不到任何有用的东西。

标签: javascriptreactjsreact-query

解决方案


最好的方法确实是通过本地状态来完成,但如果您不想禁用查询,则无需禁用 - 只需将refetchIntervalback 设置为 0 也可能就足够了:

const [refetchInterval, setRefetchInterval] = useState(intervalMs)

useQuery(
  key,
  queryFn,
  {
    refetchInterval,
    onError: () => setRefetchInterval(0)
  }
)

推荐阅读