首页 > 解决方案 > React Query:在获得某些数据之前,我可以使用 React Query 进行轮询吗?

问题描述

我想实现长轮询,直到我从 API 获得某些数据。

例如,假设我们有一个返回进程进度的 API。我想调用那个 API,直到过程完成。

是否可行,如果可行,我该如何实施?

标签: reactjslong-pollingreact-query

解决方案


我们为该用例准备了PR ,一旦我们发布,您可以:

const query = useQuery(
  key,
  fn,
  {
    refetchInterval: (data) => !data || data.progress < 100 ? 5000 : undefined
  }
)

api 尚未最终确定,实际上我会很感激一些输入 :)


在此之前,您需要使用本地状态处理此问题:

const [refetchInterval, setRefetchInterval] = React.useState(5000)
const query = useQuery(
  key,
  fn,
  {
    refetchInterval,
    onSuccess: (data) => {
        if (data.progress === 100) {
          setRefetchInterval(false)
        }
    }
  }
)


推荐阅读