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

为何空依赖useEffect中的函数在控制台触发两次调用?

问题原因及解决方案

为什么会打印两次"success"

  • 这是**React严格模式(Strict Mode)**在开发环境下的默认行为。React Strict Mode会重复调用useEffect回调、生命周期函数等,用来帮你排查未清理的副作用、重复操作等潜在问题。
  • 你的useEffect虽然设置了空依赖数组[],但在开发环境的Strict Mode中会被执行两次,生产环境不会出现这个情况。

解决方法

方法1:关闭React Strict Mode

找到项目入口文件(一般是index.js或main.jsx),移除包裹组件的<React.StrictMode>标签即可。示例修改:

// 修改前
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

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

// 修改后
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <App />
);

方法2:接受开发环境的检测行为

Strict Mode的重复执行只发生在开发环境,生产环境打包后不会触发。如果你的请求是幂等的(重复调用不会导致数据异常),可以不用处理,这属于正常的开发检测机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:05:13