useQuery({ queryKey: ['orders', userId], queryFn: () => fetchOrders(userId) });
queryClient.clear(); // 退出登录时

客服账号切换后,订单列表显示上一个账号的 8 条记录,点详情报 403。退出重登才恢复正常。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:queryKey 只写了 ['orders'],没有带用户 id,缓存被两个账号共用。切换账号后组件挂载先命中旧缓存,再被后台请求覆盖。

这次卡住的地方就在「queryKey 缓存维度」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:queryKey 加上 userId 或租户 id 作为维度;退出登录时 clear 整个 query 缓存;切换账号后等首个请求完成再渲染列表;两个账号来回切 确认不出现对方的单号。

确认没问题再收工,切换账号后列表立即变成新账号的数据,不再出现 403。

作者 9823189