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

React中如何实现每隔10秒自动刷新API数据并重新渲染?

React 10秒轮询刷新API实现方案

你可以直接按以下代码调整现有逻辑:

useEffect(() => {
  const fetchData = async () => {
    // 加请求锁,避免前一次请求未完成时重复调用
    if (isLoading) return
    setIsLoading(true)
    try {
      const response = await coinGecko.get("/coins/markets", {
        params: {
          vs_currency: "usd",
          ids: watchList.join(","),
        }
      })
      setCoins(response.data)
    } catch (error) {
      // 可自行替换为项目内的错误提示逻辑
      console.error("数据拉取失败:", error)
    } finally {
      setIsLoading(false)
    }
  }

  // 页面首次加载立刻执行一次请求
  fetchData()
  // 设置10秒间隔的轮询定时器
  const pollTimer = setInterval(fetchData, 10 * 1000)

  // 组件卸载时清除定时器,防止内存泄漏
  return () => clearInterval(pollTimer)
// 依赖项添加watchList,关注列表变动时自动重启轮询拉取新数据
}, [watchList])

核心调整说明

  • 新增setInterval定时器实现10秒间隔重复触发请求,setCoins更新状态后会自动触发页面重新渲染
  • 新增useEffect清理函数,组件卸载/依赖变动时主动销毁定时器,避免内存泄漏和无效请求
  • 新增请求锁和异常捕获逻辑,避免请求堆叠、接口报错导致的状态异常
  • 依赖数组补充watchList变量,保证关注列表变动后拉取的是对应最新的币种数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:39:02