React Native中react-query的App焦点重取功能无法正常工作
React Native中TanStack Query焦点重取不生效的排查方案
检查查询的重取配置
默认情况下,TanStack Query的refetchOnWindowFocus为true,但如果在创建查询时手动设为false,或是在QueryClient全局默认配置里禁用了该选项,焦点切换时就不会触发重取:- 单个查询:确认
useQuery的配置中没有refetchOnWindowFocus: false - 全局配置:检查
QueryClient初始化代码,若设置了defaultOptions: { queries: { refetchOnWindowFocus: false } },需改为true或针对特定查询单独开启
- 单个查询:确认
验证
appActive的取值类型
自定义useAppState返回的状态可能不是布尔值(比如部分实现返回"active"/"background"这类字符串),而focusManager.setFocused()需要传入布尔值,可做类型转换:const [appState] = useAppState(); const appActive = appState === 'active'; useEffect(() => { focusManager.setFocused(appActive); }, [appActive])确认
focusManager的正确导入
确保从@tanstack/react-query正确导入focusManager,而非其他包或自定义实现:import { focusManager } from '@tanstack/react-query';检查组件挂载时机
若自定义hook所在组件在App后台时被卸载,重新进入前台时可能无法触发useEffect更新焦点状态。需将该hook挂载在全局根组件(如App.tsx)中,保证全程监听App状态
内容的提问来源于stack exchange,提问作者Kipnoedels
相关产品推荐
相关产品推荐

