TanStack Query中调用invalidateQueries触发的查询未执行配置重试逻辑的问题求助
TanStack Query中调用invalidateQueries触发的查询未执行配置重试逻辑的问题求助
各位大佬好,我最近在使用TanStack Query时遇到一个奇怪的问题,想请教下大家:
我目前通过queryClient的defaultOptions做了全局配置:
- 查询(queries)设置为最多自动重试3次
- mutations则通过自定义函数
functionToCheckErrorCode判断特定错误码来决定是否重试
大部分场景下这个配置都能正常工作,但最近遇到一个特殊情况:当调用useMutation之后,不管mutation执行成功还是失败,我都会调用invalidateQueries去触发某个useQuery对应的get请求重新获取数据。结果发现,这种情况下如果这个get请求失败了,并没有按照配置的重试逻辑去重试——mutation本身失败时不重试是符合预期的,但被invalidateQueries触发的get请求失败后,完全没执行重试,可正常直接触发useQuery的时候是会按配置重试3次的。
我的queryClient配置代码如下:
export const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 5 * 1000, retry: 3, throwOnError: true, refetchOnMount: false, refetchOnWindowFocus: false, }, mutations: { retry: () => functionToCheckErrorCode }, } })
mutation执行后调用invalidate的代码:
queryClient.invalidateQueries({ queryKey: ["getKey"] })
我翻了官方文档但没找到相关说明,难道invalidateQueries触发的查询本来就不会执行重试逻辑吗?有没有办法让它和正常触发useQuery时一样应用重试配置?
内容来源于stack exchange
相关产品推荐
相关产品推荐

