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

React中useEffect添加size依赖引发无限循环的解决方案咨询

解决React useEffect依赖与useSWRInfinite的无限循环问题

React要求useEffect钩子声明所有依赖是为了保证副作用逻辑的一致性,但在你这个场景里,直接把size加入依赖数组会触发无限循环——因为更新size后effect会再次执行,进而再次更新size。

正确的处理方式是使用函数式更新来修改size,这样就不需要将size加入依赖数组:

useEffect(() => {
    if (inView) {
      setSize(prevSize => prevSize + 1)
    }
}, [inView, setSize])

函数式更新会自动接收当前的size值作为参数,你只需要基于这个值计算新状态即可。这种写法既符合React的依赖规则(控制台不会再弹出警告),又能避免无限循环,因为effect的依赖只有inView和setSize——setSize是由React稳定提供的函数,不会频繁变化,只有当inView状态改变时,effect才会执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:20:16