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

React组件状态值未变化时是否不会重渲染?附案例疑问

当新状态值与旧状态值相同时,React组件是否不会重新渲染?

是的,这是React默认的性能优化逻辑:当你通过useState的更新函数(或类组件的setState)设置的新状态值与当前状态值完全相等时,React会跳过组件的重渲染流程。

你的案例具体原因分析

在你的代码里,count的初始值是1,每次点击按钮调用setCount(1)时,传入的新值和当前count的旧值完全一致。React会对新旧状态做浅比较:

  • 对于数字、字符串这类基本数据类型,浅比较就是直接对比值是否相等
  • 当检测到值没有变化时,React会判定组件不需要更新,因此不会触发重渲染。所以控制台只会在组件首次挂载时输出一次Rendered,后续点击按钮都不会再输出该日志;而clicked会每次都输出,因为这是按钮点击事件里的同步执行代码,和组件渲染逻辑无关。

补充说明(引用类型的情况)

如果状态是对象、数组这类引用类型,即使新旧状态的内容完全一样,但引用地址不同,React还是会触发重渲染。比如:

const [obj, setObj] = React.useState({ num: 1 });
// 每次调用都会生成新对象,即使内容相同,组件会重渲染
setObj({ num: 1 });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:45:01