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

为何useEffect在依赖[count == 2]时,count为3也会触发执行?

useEffect依赖项使用误区解析

下面的代码运行后,useEffect会依次输出count的0、2、3值。初始渲染输出0符合预期,但按逻辑本该仅在count等于2时触发副作用,可count为3时也执行了:

useEffect(() => {
   console.warn(count);
}, [count == 2]);

问题根源

useEffect的依赖数组是追踪值的变化,这里你传入的是count == 2的计算结果——一个布尔值:

  • 初始渲染时,count=0,count==2为false,触发初始执行,输出0;
  • 当count变为2时,count==2变为true,依赖值从false变true,触发执行,输出2;
  • 当count变为3时,count==2变回false,依赖值从true变false,再次发生变化,因此又触发执行,输出3。

正确写法

如果想仅在count等于2时执行副作用逻辑,应该把count放入依赖数组,在副作用内部做条件判断:

useEffect(() => {
  if (count === 2) {
    console.warn(count);
  }
}, [count]);

这样只有count变化时才会进入副作用函数,内部判断满足条件后才执行输出,只会在count=2时触发预期逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:52:36