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

React-Query:useQueries遍历数组时refetchOnWindowFocus配置为何失效?

为什么useQueries通过map生成配置时refetchOnWindowFocus不生效?

问题根源是错误地把查询配置项嵌套在了options对象里。在React Query的useQueries中,每个查询配置的参数是平级的,并不存在options这个嵌套属性——这个写法混淆了useQuery的调用方式(useQuery(queryKey, queryFn, options))和useQueries的配置结构。

正确的写法

把原来嵌套在options里的refetchOnWindowFocus和enabled直接提出来,与queryKey、queryFn平级声明即可:

matchData.map((match) => {
  return {
    queryKey: ["matchInfo", match],
    queryFn: async () => await fetchMatchInfoByMatchId(match),
    refetchOnWindowFocus: false,
    enabled: !!match,
  };
})

额外优化说明

  1. 直接使用match代替matchData[index],map回调的第一个参数就是当前遍历的元素,无需通过索引取值
  2. enabled改为判断单个match的有效性,避免数组存在但当前元素为空时仍发起无效请求

useQueries的每个配置项结构和useQuery的第三个参数(options)完全一致,所有配置都是平级声明的,不需要额外嵌套。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:50:24