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

React中useEffect依赖项被设为相同值时是否会触发执行?

React useEffect执行问题解答

答案:该useEffect不会被触发执行

原因说明

  • React处理useState的状态更新逻辑时,默认会对新老状态做浅比较:如果新传入的状态值和当前状态浅比较相等,会直接跳过本次状态更新,组件不会触发重渲染。
  • 示例中的number是基本数据类型,调用set_number(2 - 1)传入的新值为1,和当前number的状态值完全相等,因此React会判定为无状态变更,不执行重渲染。
  • useEffect仅会在依赖项发生变化、且对应渲染周期结束后才会触发回调,本次既没有状态变更也没有重渲染流程,自然不会执行useEffect内部逻辑。

补充注意

如果状态是引用类型(对象、数组等),哪怕内容完全一致,只要传入的是新的引用地址,浅比较会判定为不相等,就会触发重渲染和对应依赖的useEffect,示例如下:

const [user, setUser] = useState({name: '张三'});
useEffect(() => {
  console.log('user变化了')
}, [user])

// 以下代码会触发useEffect,因为传入的是全新的对象引用
setUser({name: '张三'})

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:06:05