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

为何在Next.js的_app.tsx中Redux的me请求被调用两次?

为什么Next.js中_app.tsx的useEffect空依赖仍触发两次请求?

核心原因:开发环境的Strict Mode

Next.js在开发模式下默认启用React Strict Mode,这个模式会刻意重复调用useEffect、组件挂载/卸载函数,目的是帮你提前检测代码中的非幂等副作用(比如重复请求导致的数据不一致、状态异常)。这种重复执行仅存在于开发环境,生产环境会自动恢复正常,不会出现两次请求的情况。

其他可能的次要原因

如果你的store(比如Redux)存在配置问题,可能导致dispatch被意外触发多次,但根据你描述“注释这段代码请求次数为0”,这个可能性极低,核心原因还是Strict Mode。

解决办法

  • 开发环境直接忽略:这是Strict Mode的正常检测行为,生产环境不会出现,无需额外处理。
  • 关闭Strict Mode(不推荐):如果实在不想看到重复请求,可以在next.config.js中关闭该模式:
    module.exports = {
      reactStrictMode: false,
    }
    
    但关闭后会失去Strict Mode的bug检测能力,不建议在开发阶段这么做。
  • 让请求支持幂等:优化me接口,确保多次调用不会产生不良影响(比如返回相同结果、不会重复修改后端数据),这是更健壮的生产级解决方案。

内容的提问来源于stack exchange,提问作者János

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:30:49