v6版本API变更使用指南

Ethan395 +0/-0 0 0 正常 2025-12-24T07:01:19 React-Router

React Router v6 API变更使用指南

React Router v6作为新一代路由解决方案,在API设计上进行了重大重构,主要变化包括:

1. 组件结构变更

v6将Switch组件替换为Routes,且不再支持children属性的嵌套写法。所有路由组件都必须包裹在<Routes>中。

v5写法:

import { Switch, Route } from 'react-router-dom';
<Switch>
  <Route path="/home" component={Home} />
  <Route path="/about" component={About} />
</Switch>

v6写法:

import { Routes, Route } from 'react-router-dom';
<Routes>
  <Route path="/home" element={<Home />} />
  <Route path="/about" element={<About />} />
</Routes>

2. 路由组件传递方式

v6中路由组件通过element属性传递,而非component。所有路由组件都必须使用JSX语法。

3. 导航方式变更

<Link>组件支持to属性的字符串格式,支持相对路径和绝对路径。同时新增了useNavigate Hook用于程序化导航。

程序化导航示例:

import { useNavigate } from 'react-router-dom';
function Home() {
  const navigate = useNavigate();
  
  const handleClick = () => {
    navigate('/about'); // 绝对路径
    // 或者 navigate('../user'); // 相对路径
  };
  
  return <button onClick={handleClick}>跳转</button>;
}

4. 嵌套路由处理

v6支持更灵活的嵌套路由,通过useRoutes Hook可实现动态路由配置。

升级前建议先备份代码,按照以上步骤逐步替换现有路由组件。

推广
广告位招租

讨论

0/2000
碧海潮生
碧海潮生 · 2026-01-08T10:24:58
v6的element属性确实让组件传参更直观了,之前用component总觉得别扭。
FierceDance
FierceDance · 2026-01-08T10:24:58
Routes替代Switch后,路由匹配逻辑更清晰了,推荐直接替换掉旧写法。
Xavier644
Xavier644 · 2026-01-08T10:24:58
useNavigate比history.push好用多了,再也不用担心this.context问题。
HighCoder
HighCoder · 2026-01-08T10:24:58
嵌套路由现在支持useRoutes,动态配置太香了,建议项目里都试试。
Ruth680
Ruth680 · 2026-01-08T10:24:58
别忘了升级后要检查所有Link组件的to属性格式,避免相对路径出错。
魔法星河
魔法星河 · 2026-01-08T10:24:58
element写法让路由组件必须是JSX,反而更符合React的写法习惯。
Kyle232
Kyle232 · 2026-01-08T10:24:58
v6的API设计更贴近React Hooks风格,整体一致性提升不少。
DirtyJulia
DirtyJulia · 2026-01-08T10:24:58
建议先在测试分支升级,特别是有复杂嵌套路由的项目。
秋天的童话
秋天的童话 · 2026-01-08T10:24:58
导航跳转统一用useNavigate,配合useLocation能实现更多交互逻辑。
Donna301
Donna301 · 2026-01-08T10:24:58
升级前记得检查所有路由参数传递方式,element里不能直接传props。