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

React类组件中constructor与数组控制台打印两次的原因

为何React类组件中的constructor日志与数组内容会在控制台打印两次?

核心原因:React严格模式(Strict Mode)的开发环境行为

在开发环境下,React的Strict Mode会刻意重复调用部分核心方法,目的是帮你提前排查代码中的潜在问题(比如不符合规范的副作用、非幂等操作),这些方法包括:

  • 类组件的constructor
  • render方法
  • 函数组件的顶层逻辑代码
  • 状态更新函数等

你的代码里,constructor内的console.log会因Strict Mode被执行两次;同时render方法里的this.state.articles.map(...)中的console.log(Element),也会跟着render的重复调用执行两次,这都是Strict Mode的正常检测机制。

关键说明

  • 这种重复执行仅存在于开发环境,生产环境下不会触发,完全不影响线上用户体验。
  • Strict Mode的设计初衷是提前暴露代码隐患,比如某些逻辑在重复执行时会引发内存泄漏、状态异常等问题。

如何取消单次打印(可选)

如果只是想在开发阶段看到单次日志输出,只需修改项目根组件的渲染代码,去掉<React.StrictMode>的包裹即可。示例:
原根渲染代码:

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

修改后:

ReactDOM.render(
  <App />,
  document.getElementById('root')
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:54:59