React Router v6作为React官方路由库的最新版本,在路由配置上带来了显著变化。本文将深入解析v6的核心变更并提供实战升级方案。
主要变化
v6最核心的改变是移除了Switch组件,改为使用Routes组件,并且路由匹配逻辑从严格匹配变为按顺序匹配。同时,useRouteMatch和useHistory等API被废弃,替换为useNavigate和useLocation。
升级步骤
- 安装新版本:
npm install react-router-dom@latest - 替换Switch为Routes:
// v5
<Switch>
<Route path="/home" component={Home} />
<Route path="/about" component={About} />
</Switch>
// v6
<Routes>
<Route path="/home" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
- 更新导航方式:使用
useNavigate替代history.push
const navigate = useNavigate();
const handleClick = () => {
navigate('/home');
};
实战应用
在实际项目中,建议采用嵌套路由结构。例如构建一个带侧边栏的管理后台系统,可以这样配置:
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Dashboard />} />
<Route path="users" element={<Users />} />
<Route path="settings" element={<Settings />} />
</Route>
</Routes>
注意事项
- v6中必须使用
element属性而非component属性 useParams仍然可用,但需注意参数获取方式- 嵌套路由需要在父组件中使用
Outlet组件渲染子路由内容

讨论