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

React Native中React Query useQuery的staleTime未按预期触发接口请求

核心原因

你对React Query(TanStack Query)中staleTime参数的作用存在误解,这个参数不是用来设置接口定时轮询间隔的,自然无法实现每秒自动调用接口的效果。


参数作用说明

  • staleTime的实际作用是:标记请求返回的缓存数据为「新鲜状态」的时长,单位为毫秒。你配置的staleTime: 1000仅代表:接口请求成功后,1秒内这份缓存会被判定为新鲜,期间不会触发任何自动重拉;1秒后缓存被标记为「陈旧」,但也只有满足React Query默认的重拉触发条件时,才会重新发起请求。
  • React Query默认触发陈旧数据重拉的场景只有这几种:
    • 绑定该Query的组件重新挂载
    • 应用从后台切回前台、获得焦点
    • 设备网络断开后重新连接
    • 代码中手动调用refetch方法触发重拉
    • 配置了定时轮询参数

实现每秒请求的正确方式

要达到每秒自动调用接口的效果,你需要使用专门控制轮询间隔的refetchInterval参数,修正后的useQuery配置示例如下:

const {data} = useQuery('getReservations', getReservations, {
  staleTime: 1000,
  refetchInterval: 1000, // 轮询间隔,单位毫秒,设置为1000即每秒发起一次请求
  refetchIntervalInBackground: true, // 可选配置:应用在后台运行时也保持轮询
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:48:15