javascript - 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
但它看起来有点笨拙。通过文档,我找不到任何有用的东西。
解决方案
最好的方法确实是通过本地状态来完成,但如果您不想禁用查询,则无需禁用 - 只需将refetchInterval
back 设置为 0 也可能就足够了:
const [refetchInterval, setRefetchInterval] = useState(intervalMs)
useQuery(
key,
queryFn,
{
refetchInterval,
onError: () => setRefetchInterval(0)
}
)
推荐阅读
- r - R中yyyy mm dd hh mm ss(无标点符号)的正则表达式
- laravel - Laravel 外键 'student_id' 没有默认值,即使它在请求中
- go - 生产就绪的 Google Cloud Function 是什么样的?
- r - 不是Stata 5-12 .dta 文件
- mysql - MAMP PRO 在 my.cnf 中禁用 ONLY_FULL_GROUP_BY、NO_ZERO_IN_DATE、NO_ZERO_DATE
- django - 在 Django admin 中显示只读的 GenericForeignKey 值
- maven - maven-scr-plugin 不使用 java 10 生成 OSGI-INF 文件夹结构
- javascript - 复选框更改时调用的 JavaScript 函数
- regex - Angular 5:正则表达式模式不应允许字母数字/字母,它应该只允许数字
- asp.net-mvc - 使用 Angular 5 持续集成/部署的 Asp.Net MVC 项目