【发布时间】:2021-07-13 09:02:43
【问题描述】:
我正在按时间间隔重新获取 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 一起使用,但这似乎有点笨拙。通过文档,我找不到任何有用的信息。
【问题讨论】:
-
我认为这就是你必须要做的。我很确定 react-query 的要点之一是不断重新获取
-
@RichardHpa 是的,很有可能。我可能可以创建一个调用 react-query 并具有包含错误的 useState 的钩子。尽管如此,还是想知道是否有什么东西不会引入这种复杂性。
-
我必须对只想运行一次或手动重试的查询做同样的事情
-
@RichardHpa 你为什么不禁用
retry? -
您必须关闭 4 个不同的选项来关闭重试、refetchOnMount、refetchOnReconnect、refetchOnWindowFocus,它们都需要为 false。所以为了避免我不得不多次写这些,我只是为它做了一个钩子
标签: javascript reactjs react-query