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

设置staleTime/gcTime为Infinity后TanStack Query仍自动重取问题

解决TanStack Query缓存数据仍后台重取的问题

问题根源

你设置的staleTime: Infinity仅将缓存数据标记为永久新鲜,但TanStack Query默认会在组件挂载、查询键切换回已缓存值时触发后台重取,这是独立于staleTime的默认行为。

修复方案

在useQuery配置中添加三个禁用自动重取的选项,彻底关闭不必要的后台请求:

export const useSearchDictionaryQuery = (lang: Languages, searchTerm: string) =>
  useQuery({
    queryKey: ['searchDictionary', searchTerm, lang],
    queryFn: () => fetchSearchDictionary(lang, searchTerm),
    enabled: false,
    staleTime: Infinity,
    gcTime: Infinity,
    // 禁用所有自动触发的重取行为
    refetchOnMount: false,
    refetchOnWindowFocus: false,
    refetchOnReconnect: false,
  });

选项说明

  • refetchOnMount: false:组件挂载时,不重取已缓存的新鲜数据
  • refetchOnWindowFocus: false:窗口重新获得焦点时不触发重取
  • refetchOnReconnect: false:网络恢复连接时不触发重取

后续若需要主动更新数据,可调用useQuery返回的refetch方法手动触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:53:11