You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

全局捕获401错误时如何清除React Query查询缓存?

解决方案

在全局onError回调中,你可以通过query参数的queryClient属性获取到当前的QueryClient实例,进而调用removeQueries()方法清除所有查询缓存。

修改后的代码如下:

const queryClient = useMemo(
    () =>
      new QueryClient({
        queryCache: new QueryCache({
          onError: (error, query) => {
            handleToastErrorMessage(error);

            // 加可选链避免error无response时报错
            if (error.response?.status === 401) {
              // 通过query实例获取queryClient并清除所有缓存
              query.queryClient.removeQueries();
            }
          },
        }),
      }),
    []
);

补充说明

  • query参数是Query实例,自带queryClient引用,无需额外传递或全局存储QueryClient。
  • removeQueries()不带参数时会清除所有查询缓存;如果需要精准清除特定缓存,可以传入queryKey等筛选条件,比如query.queryClient.removeQueries({ queryKey: ['user'] })。
  • 使用error.response?.status的可选链操作符,避免请求失败未返回response时出现Cannot read properties of undefined的报错。

内容的提问来源于stack exchange,提问作者Furkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:59:57