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

为何该代码片段中count=1时未触发React.useEffect?

为什么count=1时useEffect没触发?

咱们一步步拆解这个问题:

你的useEffect依赖项是[count < 2],这是个返回布尔值的表达式,React判断是否执行effect的逻辑是浅比较依赖项数组的前后值,具体过程如下:

  • 初始渲染:count=0,count < 2结果为true,effect执行,输出ran effect 0。
  • 第一次点击按钮:count变成1,count < 2结果还是true。因为前后依赖项都是true,没有发生变化,所以React不会重新执行effect——这就是你看不到count=1对应日志的原因。
  • 第二次点击:count变成2,count < 2结果变成false,依赖项从true变为false,发生了变化,所以effect执行,输出ran effect 2。
  • 后续点击:count大于2,count < 2一直是false,依赖项不再变化,effect也就不再触发。

而当你把依赖项改成[count]时,每次count变化(0→1→2→3...),依赖项的数值都不一样,所以每次都会触发effect,自然能看到count=1的日志。

解决方案

如果你想在count每次变化时都触发effect,直接把count作为依赖项即可:

React.useEffect(() => {
  console.log("ran effect", count)
}, [count])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:35:18