如何 return 一个错误,但继续在 react-query 中重试
How to return an error but continue to retry in react-query
我正在使用 react-query
从后端获取数据。
当用户查看页面时,可选的后台还没有数据,所以后台会return404
,用户将看到一个 EmptyState 组件。
现在,我想显示 EmptyState 组件,但继续 refetch/retry 在后台。
react-query
如何实现?
我尝试使用“无限重试”,但是当react-query
重试时,它仍然returns isLoading = true
,我无法显示 ]EmptyState同时。
我也想过使用 refetchInterval
,但是如果,例如,我将它设置为 30 秒,我不希望它在 returned 数据时是 30 分钟。
react-query 只会在所有重试完成后进入错误状态。我看到多个选项:
- 按照您自己的建议使用
refetchInterval
。是否开启区间可以设置为函数导出,具体取决于数据:
refetchInterval: (data, query) => query.state === 'error' ? 5000 : 0
只要查询处于错误状态,这将每 5 秒重新获取一次。如果成功,间隔将被禁用。
- 使用重试,react-query 会给你一个从
useQuery
返回的 failureCount: boolean
。每次查询失败并在内部重试时,此计数都会更新。一旦查询成功,失败计数将返回到 0
,或者一旦您重新启动提取。
所以你可以在 failureCount > 0
时显示你的空状态
我正在使用 react-query
从后端获取数据。
当用户查看页面时,可选的后台还没有数据,所以后台会return404
,用户将看到一个 EmptyState 组件。
现在,我想显示 EmptyState 组件,但继续 refetch/retry 在后台。
react-query
如何实现?
我尝试使用“无限重试”,但是当react-query
重试时,它仍然returns isLoading = true
,我无法显示 ]EmptyState同时。
我也想过使用 refetchInterval
,但是如果,例如,我将它设置为 30 秒,我不希望它在 returned 数据时是 30 分钟。
react-query 只会在所有重试完成后进入错误状态。我看到多个选项:
- 按照您自己的建议使用
refetchInterval
。是否开启区间可以设置为函数导出,具体取决于数据:
refetchInterval: (data, query) => query.state === 'error' ? 5000 : 0
只要查询处于错误状态,这将每 5 秒重新获取一次。如果成功,间隔将被禁用。
- 使用重试,react-query 会给你一个从
useQuery
返回的failureCount: boolean
。每次查询失败并在内部重试时,此计数都会更新。一旦查询成功,失败计数将返回到0
,或者一旦您重新启动提取。
所以你可以在 failureCount > 0