react路由v6讲解

本文详细介绍了React-Router V6的新特性,包括路由基本使用、嵌套路由、重定向和404处理、路由传参方式,并对比了与V5的区别。重点讲解了useRoutes的使用,帮助开发者更好地理解和应用React-Router V6。

React-Router V6版本的升级了也有段时间了,部分同学还是对v6版本有一些地方不太理解,今天咱们花10分钟来讲下v5和v6有哪些使用上的差异。

一、 React-Router V6版本

React-Router V6版本常用路由组件和hooks

组件名 作用 说明
<Routers> 一组路由 代替原有<Switch>,所有子路由都用基础的Router children来表示
<Router> 基础路由 Router是可以嵌套的,解决原有V5中严格模式,后面与V5区别会详细介绍
<Link> 导航组件 在实际页面中跳转使用
<Outlet/> 自适应渲染组件 根据实际路由url自动选择组件
hooks名 作用 说明
useParams 返回当前参数 根据路径读取参数
useNavigate 返回当前路由 代替原有V5中的 useHistory
useOutlet 返回根据路由生成的element
useLocation 返回当前的location 对象
useRoutes 同Routers组件一样,只不过是在js中使用
useSearchParams 用来匹配URL中?后面的搜索参数

如表格,V6版本常用的组件和hooks,这些是新增的常用部分,不常用部分可以查看官方文档。接下来,咱们通过案例的形式来比较上面新增的那些变化。

1. 路由的基本使用

在app.js中分别搭建home和about页面路由。

v5的写法

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

v6的写法

import { HashRouter,Route,Routes } fro
### React Router 中文文档地址 React Router 的官方中文文档可以通过以下链接访问: [React Router 中文文档](https://reactrouter.com/web/guides/quick-start) 此文档提供了关于 `react-router-dom` 的全面介绍,包括但不限于安装指南、基本用法以及高级功能的讲解。 --- 在 v6 版本中,API 发生了一些变化,例如 `withRouter` 被移除[^2],取而代之的是推荐使用 React Hooks 来处理导航逻辑。如果开发者仍然希望继续使用类组件,则需要手动创建一个类似的高阶组件来替代原有的 `withRouter` 功能[^2]。 以下是通过自定义高阶组件实现类似 `withRouter` 功能的一个示例: ```javascript import { useNavigate, useLocation, useParams } from 'react-router-dom'; export function withRouter(Child) { return (props) => { const location = useLocation(); const navigate = useNavigate(); const params = useParams(); return ( <Child {...props} params={params} navigate={navigate} location={location} /> ); }; } ``` 对于函数式组件而言,可以直接利用内置 Hook 如 `useRoutes` 完成路由配置[^1]。下面是一个基于 `useRoutes` 配置路由的例子: ```javascript // app.js 使用 import { useRoutes } from "react-router-dom"; import { useRoutes } from "react-router-dom"; import routes from "./router/routes"; function App() { const element = useRoutes(routes); return ( <> {element} </> ); } export default App; ``` 以上代码展示了如何通过 `useRoutes` 方法加载动态路由配置文件并渲染对应的页面内容[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值