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

NextJS 13 App目录下router.push硬导航后浏览器返回按钮致站点崩溃

排查Next.js App Router硬导航返回后Chrome卡死问题
  • 优先检查/account页面的组件渲染逻辑,重点盯无限循环或重复触发的状态更新:硬导航会重新初始化页面组件,要是组件里有无限触发的useEffect、没清理的订阅,或者状态更新逻辑导致反复重渲染,直接就能把CPU拉满。比如看看useEffect是不是缺依赖项,或者依赖项是每次渲染都生成新引用的对象/数组,导致无限执行。
  • 确认路由跳转的push调用规范:虽然AuthToggle里的跳转正常,但/到/account的跳转代码得检查有没有传额外参数导致路由状态异常。比如是不是在push时传了不稳定的状态值,或者错用了scroll/shallow配置。尽量用router.push('/account')这种最简调用,别加不必要的参数。
  • 排查页面的Suspense/Streaming 逻辑:App Router默认开了Streaming,如果/account页面用了Suspense但没处理好异步数据加载,硬导航后返回可能触发资源加载死循环。比如有没有异步组件在返回时反复触发加载,没正确缓存或终止请求。
  • 排除浏览器环境干扰:换Chrome无痕模式测试,排除缓存或者第三方扩展(比如广告拦截、脚本注入类)的冲突。
  • 针对你的仓库的具体检查点:
    • 打开app/account/page.tsx,看看有没有没清理的事件监听器、WebSocket连接,或者无限循环的状态更新代码。
    • 对比AuthToggle组件和首页跳转至/account的代码,找调用方式的差异,比如后者是不是在全局状态更新时重复执行push。
    • 给/account页面的useEffect加上清理函数,比如:
      useEffect(() => {
        // 业务逻辑代码
        return () => {
          // 清理订阅、定时器、事件监听等资源
        };
      }, []);
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:17