React Router v6的发布带来了许多重要变更,本文将分享我们的升级实践和关键迁移要点。首先,v6移除了<Switch>组件,改用<Routes>,但实际使用中发现需要在所有路由配置中添加element属性而非component。升级时需注意:
- 安装新版本:
npm install react-router-dom@latest - 替换Switch为Routes:
import { Routes, Route } from 'react-router-dom' - 更新路由配置:
<Route path="/home" element={<Home />} /> - 重构导航链接:
<Link to="/home">首页</Link>保持不变
在实际项目中,我们遇到的主要问题是嵌套路由的处理。v6中useNavigate返回的对象结构发生变化,需要调整跳转逻辑。具体代码示例:
const navigate = useNavigate();
// v5: navigate('/home', { replace: true })
// v6: navigate('/home', { replace: true })
另外,v6引入了useRoutes钩子用于程序化路由配置,适合复杂场景下的动态路由加载。升级过程中建议分步进行,先确保基础路由功能正常,再逐步迁移复杂的嵌套路由和权限控制逻辑。

讨论