react-router-dom v6路由配置后对应组件不显示如何解决
问题原因
重复嵌套了两层BrowserRouter路由容器是核心故障点:
- 入口文件
index.js中已经使用<BrowserRouter>包裹了根组件<App />,提供了完整的路由上下文 - App组件内部又导入
BrowserRouter并设置别名为Router,二次包裹了<Routes>路由集合
React Router v6 仅支持单一层级的路由上下文实例,多层嵌套会直接打断路由匹配链路,导致匹配不到对应路由、组件无法渲染。
补充说明:React Router v6 版本的路由默认采用精确匹配逻辑,不需要给<Route>添加exact属性,该属性在v6版本中已无实际作用。
修复步骤
移除App组件中多余的那层Router包裹即可,整个应用只保留入口文件处的唯一BrowserRouter实例。
修复完成后的App组件代码如下:
import React from "react"; import Home from "./Home.js" import More from "./More.js" import { Route, Routes } from 'react-router-dom' function App() { return ( <Routes> <Route path="/" element={<Home/>}/> <Route path="/more" element={<More/>}/> </Routes> ); } export default App;
入口文件index.js的现有配置无需修改,保存代码后重启开发服务,访问对应路径即可正常渲染路由组件。
内容的提问来源于stack exchange,提问作者Beni
相关产品推荐
相关产品推荐

