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

从一个BrowserRouter跳转至另一基础路由时触发更新深度超限警告

解决React中多BrowserRouter导致的无限渲染警告

问题根源

你同时渲染了两个独立的BrowserRouter实例,它们各自维护完全隔离的路由状态:

  • 第一个BrowserRouter里的<Navigate to="base-route" />会触发路由跳转;
  • 第二个BrowserRouter的basename设为base-route,这会导致路由状态被反复触发更新,形成无限循环,最终抛出「Maximum update depth exceeded」警告。

修复方案

React应用中只需要保留一个BrowserRouter实例,所有路由逻辑都在这个实例下统一处理。修改后的代码如下:

export const App = () => {
  return (
    <ErrorBoundary>
      <BrowserRouter basename="">
        <Routes>
          {/* 初始路径重定向到base-route */}
          <Route path="/" element={<Navigate to="base-route" />} />
          {/* 将子Router组件挂载到base-route路径下,*匹配该路径下所有子路由 */}
          <Route path="base-route/*" element={<Router />} />
        </Routes>
      </BrowserRouter>
    </ErrorBoundary>
  );
};

修改说明

  • 移除了多余的第二个BrowserRouter,避免路由状态冲突;
  • 使用<Routes>和<Route>统一管理路由规则,既实现了初始重定向逻辑,又正确挂载了子路由组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:42:01