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

未修改Props/State时组件重渲染原因及useEffect重复执行问题

React useEffect 执行两次的原因分析

我开发了一个极简React应用,仅包含一个内部带有console.log("first")的useEffect钩子。我预期该console.log("first")仅执行一次,但实际却因组件重渲染而打印了两次,恳请指导原因。

export default function App() {
  useEffect(() => {
    console.log("first");
  }, []);

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

原因说明

这是React 18及以上版本开发环境下严格模式的默认行为:

  • 为了帮助开发者提前排查重复执行可能引发的问题(比如未正确清理副作用、状态逻辑异常等),严格模式会刻意重复执行组件函数体、无依赖的useEffect回调、useMemo/useCallback的回调函数。
  • 这种重复执行仅存在于开发环境,生产环境中useEffect会按预期只执行一次。

临时解决方式(开发环境)

若想在开发时避免该现象,可找到项目入口文件(通常是index.js/index.tsx),移除<React.StrictMode>对根组件的包裹即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:42:04