如何 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 只会在所有重试完成后进入错误状态。我看到多个选项:

  1. 按照您自己的建议使用 refetchInterval。是否开启区间可以设置为函数导出,具体取决于数据:
refetchInterval: (data, query) => query.state === 'error' ? 5000 : 0

只要查询处于错误状态,这将每 5 秒重新获取一次。如果成功,间隔将被禁用。

  1. 使用重试,react-query 会给你一个从 useQuery 返回的 failureCount: boolean。每次查询失败并在内部重试时,此计数都会更新。一旦查询成功,失败计数将返回到 0,或者一旦您重新启动提取。

所以你可以在 failureCount > 0

时显示你的空状态