为何useState传入相同值仍会触发重新渲染?
React 18.2 中重复渲染的原因及是否需要关注
原因解析
官方文档里“仅当state值变化时触发重渲染”的表述是简化后的核心逻辑,但React 18在开发环境的Strict Mode下新增了自动双渲染机制:
Strict Mode会刻意重复执行组件渲染、
useEffect等生命周期逻辑,目的是提前暴露那些依赖执行次数的潜在问题(比如全局状态未清理、订阅泄漏等)。
你测试时遇到的重复渲染,正是这个机制导致的——即使state值没有变化,开发环境下Strict Mode也会触发两次渲染,而生产环境中这个行为会被自动禁用。
是否需要关注
- 开发环境下的这种重复渲染是正常的调试手段,无需过度在意,只要你的组件是纯函数、副作用清理逻辑正确,就不会影响生产环境的表现。
- 如果开发环境中双渲染引发了异常(比如重复发送请求),说明你的组件副作用逻辑存在问题,需要针对性修复(比如利用
useEffect的清理函数,或用useRef标记首次执行)。

内容的提问来源于stack exchange,提问作者labala Ba
相关产品推荐
相关产品推荐

