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

React生命周期方法与Hooks中控制台日志重复打印问题求助

React中console.log打印两次的原因及解决办法
  • 核心原因:Strict Mode(严格模式)
    React的严格模式在开发环境里会重复调用组件的渲染函数、useState/useEffect这类hooks,还有类组件的constructor、render、componentDidMount这些生命周期方法——这么做是为了帮你揪出代码里可能存在的副作用问题,比如没清理的订阅、重复触发的状态更新之类的。生产环境下不会有这种重复执行的情况。

  • 快速验证方案
    打开项目入口文件(一般是src/index.js或者src/main.jsx),找到包裹着<App />的<React.StrictMode>标签,把它注释掉,重启开发服务后再看控制台,日志就只会打印一次了。

  • 关于是否移除Strict Mode
    不建议直接删掉它。严格模式是React给开发人员的bug预警工具,日志重复只是开发环境的提示而已。要是你的代码没副作用问题,哪怕日志打两次也不影响功能;要是真有副作用,正好借着这个提示去修复——比如在useEffect里正确清理订阅,别在渲染函数里执行副作用操作。

  • 类组件和函数组件都有这情况
    不管你用类组件的生命周期方法,还是函数组件的Hooks,在严格模式下都会被调用两次,这属于开发环境的正常行为,不用慌。

内容的提问来源于stack exchange,提问作者kishore kumar kaparapu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:55:11