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

如何修复React中「不能在<Router>内渲染另一个<Router>」的错误?

问题:React应用出现Router嵌套错误且页面空白

错误提示:You cannot render a <Router> inside another <Router>. You should never have more than one in your app.

现有代码:

App.js

import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import Navbar from './Component/Navbar';
import Login from './Component/Login';
import Register from './Component/Register';

function App() {
  return (
    <div className="App">
      <Router>
        <Navbar />
        <Route exact path="/" component={Home} />
        <Route path="/Login" component={Login} />
        <Route path="/Register" component={Register} />
      </Router>
    </div>
  );
}

function Home() {
  return <h2>Home</h2>;
}

export default App;

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import App from './App';

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);

修复方案

问题根源是应用中存在两个Router实例:index.js里的<BrowserRouter>和App.js里的<Router>(本质也是BrowserRouter),react-router-dom不允许这种嵌套结构。

修改App.js,移除内部的<Router>包裹,因为外层已经通过index.js提供了Router上下文:

import React from 'react';
import { Route } from 'react-router-dom'; // 不再导入Router
import Navbar from './Component/Navbar';
import Login from './Component/Login';
import Register from './Component/Register';

function App() {
  return (
    <div className="App">
      <Navbar />
      <Route exact path="/" component={Home} />
      <Route path="/Login" component={Login} />
      <Route path="/Register" component={Register} />
    </div>
  );
}

function Home() {
  return <h2>Home</h2>;
}

export default App;

修改后整个应用仅保留一个Router实例,错误会消失,页面也能正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:05