从v5到v6:React Router部署策略调整踩坑
最近项目从React Router v5升级到v6,原本以为只是简单的版本升级,结果踩了不少坑。今天就来分享一下这次升级的血泪史。
升级前的准备工作
首先,按照官方文档,需要先安装新版本:
npm install react-router-dom@6
然后删除旧的路由组件引用。
核心问题一:Route组件语法变更
v5中可以这样写:
<Route path="/user" component={User} />
v6中必须使用元素渲染方式:
<Route path="/user" element={<User />} />
这个改动在大型项目中需要逐个替换,否则会报错。
核心问题二:Switch组件被移除
v5中的<Switch>在v6中被移除,需要使用<Routes>替代:
// v5
<Switch>
<Route path="/home">Home</Route>
</Switch>
// v6
<Routes>
<Route path="/home" element={<Home />} />
</Routes>
核心问题三:useHistory Hook变更
v5中使用useHistory(),v6中改用useNavigate(),在所有使用的地方都需要替换。
// v5
const history = useHistory();
history.push('/login');
// v6
const navigate = useNavigate();
navigate('/login');
部署策略调整
升级后发现,由于路由结构变更,部署到生产环境时需要重新测试所有页面跳转逻辑。建议在升级前先在测试环境完整跑一遍,确保所有路由都能正常访问。
总的来说,虽然升级过程有些繁琐,但v6的性能和API设计确实更现代化了。

讨论