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, }; })
额外优化说明
- 直接使用
match代替matchData[index],map回调的第一个参数就是当前遍历的元素,无需通过索引取值 enabled改为判断单个match的有效性,避免数组存在但当前元素为空时仍发起无效请求
useQueries的每个配置项结构和useQuery的第三个参数(options)完全一致,所有配置都是平级声明的,不需要额外嵌套。
内容的提问来源于stack exchange,提问作者xiaofeng
相关产品推荐
相关产品推荐

