react-router-dom 6.0路由详解
React react-router-dom 6.0路由使用
由于react路由版本的更新迭代,记录路由知识点
新react-router-dom地址,点击查看详情。
下面为使用的例子
- Install
npm install react-router-dom@6 history@5
yarn add react-router-dom@6 history@5
- 配置路由地址
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
function Routelist(){
return(
<Router>
<Routes>
<Route path='/' element={<App />}></Route>
<Route path="invoices" element={<Invoices />}>
<Route
index
element={
<main style={{ padding: "1rem" }}>
<p>Select an invoice</p>
</main>
}
/>
<Route path=":invoiceId" element={<Invoice />} />
</Route>
{/* 不匹配 */}
<Route
path="*"
element={
<main style={{ padding: "1rem" }}>
<p>There's nothing here!</p>
</main>
}
/>
</Routes>
</Router>
)
}
在使用导航时需要特别注意的时,需要在父组件里面增加 <Outlet /> ,才可以跳转成功。
跳转页面的方式
navigate(/invoices/${number}, { state: 1 })<NavLink to={
/invoices/${number}} state={{a:1}}>1在子组件中获取参数
import { useLocation } from 'react-router-dom'let location = useLocation()
let data=location.state
地址栏参数获取
import { useParams } from 'react-router-dom'let params = useParams()
let data=params.get('参数名')在class components之前使用withRouter,但在新版中withRouter已移除,如果需要升级更新为 函数式组件或者封装hoc组件
eg:
import React from "react";
import { useParams, useLocation, useNavigate } from "react-router-dom";
function withRouter(Component) {
return (props) => (
<Component
{...props}
params={useParams()}
location={useLocation()}
navigate={useNavigate()}
/>
);
}
class Invoice extends React.Component {
render() {
return (
<div
onClick={() => this.props.navigate(`/invoices/1998`, { state: "1998" })}
>
22
</div>
);
}
}
export default withRouter(Invoice);
如有问题,不吝赐教,欢迎留言。
react-router-dom 6.0路由详解的更多相关文章
- react router @4 和 vue路由 详解(全)
react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- react router @4 和 vue路由 详解(八)vue路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 13.vue路由守卫 a.beforeEach 全局守卫 (每个路由调用前都会触发,根据 ...
- react router @4 和 vue路由 详解(六)vue怎么通过路由传参?
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 8.vue怎么通过路由传参? a.通配符传参数 //在定义路由的时候 { path: ' ...
- react router @4 和 vue路由 详解(五)react怎么通过路由传参
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 7.react怎么通过路由传参? a.通配符传参(刷新页面数据不丢失) //在定义路由的 ...
- react router @4 和 vue路由 详解(四)vue如何在路由里面定义一个子路由
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 6.vue如何在路由里面定义一个子路由? 给父路由加一个 children:[] 参考我 ...
- react router @4 和 vue路由 详解(三)react如何在路由里面定义一个子路由
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 5.react如何在路由里面定义一个子路由? a.引入在需要子路由的页面引入Rout ...
- react router @4 和 vue路由 详解(二)react-router @4用法
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 2.react-router @4用法 a.大概目录 不需要像vue那样麻烦的 ...
- react router @4 和 vue路由 详解(一)vue路由基础和使用
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 1.vue路由基础和使用 a.大概目录 我这里建了一个router文件夹,文件夹下有in ...
- Vue 路由详解
Vue 路由详解 对于前端来说,其实浏览器配合超级连接就很好的实现了路由功能.但是对于单页面应用来说,浏览器和超级连接的跳转方式已经不能适用,所以各大框架纷纷给出了单页面应用的解决路由跳转的方案. V ...
随机推荐
- 【RSocket】使用 RSocket(二)——四种通信模式实践
Source Code: https://github.com/joexu01/rsocket-demo 0. 四种通信模式 让我们来简单复习一下 RSocket 的四种通信模式: 即发即忘 - Fi ...
- 11.1/2 鼠标显示问题(harib08a)11.2 实现画面外的支持(harib08b)
ps:能力有限,若有错误及纰漏欢迎指正.交流 11.1 鼠标显示问题(harib08a) 存在问题: 在harib07d中鼠标移动到最右侧后就不能再往右移了 解决办法: 将 if (mx > ...
- Python3.10 的开发环境的搭建
安装 下载 Python3.10 或者其他版本:Download Python | Python.org 如果 Windows 操作系统下载,默认是下载 64 位操作系统的 exe 安装包:pytho ...
- Kafka 管理【主题、分区、消费者组】
更多内容,前往 IT-BLOG 主题操作 使用 kafka-topics.sh 工具可以执行主题的大部分操作.可以用它创建.修改.删除和查看集群里的主题.要使用该工具的全部功能,需要通过 --zook ...
- 主机CPU散热器过重可能导致系统不稳定
CPU散热器越大,散热能力越强?其实散热器重量只是其中一个指标,还有风道设计也很重要.那么问题来了,为什么处理器散热器重量过重也可能导致系统运行不稳定? 本人用的配置为AMD R7 2700X 处理器 ...
- 分享我通过 API 赚钱的思路
写在最前 我们经常看到非常多的 API 推荐,但又经常收藏到收藏夹里吃灰,仿佛收藏了就是用了. 很多时候没有用起来,可能是因为想不到某类 API 可以用来做什么或者能应用在哪里. 下面我将我思考的一些 ...
- Teamcenter_NX集成开发:UF_UGMGR_invoke_pdm_server函数的使用
之前了解到通过UFUN函数UF_UGMGR_invoke_pdm_server可以调用Teamcenter ITK函数,从而可以获取及编辑Teamcenter对象.UFUN中有样例代码,但是就是不知道 ...
- Moho Pro - Mac 上一款专业的二维动画制作软件,强大的功能让你尽情发挥创意
Moho,以前被称为动画工作室专业版,是最好的质量的2D动画软件之一.这个程序是理想的专业人士寻找一个更有效的替代方法来创建动画,没有繁琐的详细逐帧处理.具有直观的界面和现成的人物和附加对象(卡通对象 ...
- Java 8新特性之 Optional 类
前言 java.util.Optional 是java8中引进的一个新的类,我们通过Optional类的源码可以看到,该方法的作用可以对可能缺失的值进行建模,而不是直接将null赋值给变量. Opti ...
- .NET Core MongoDB数据仓储和工作单元模式实操
前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装,这一章节主要讲的是MongoDB用户管理相关操作实操.如:获取所有用户信息.获取用户分页数据.通过用户ID获取对应用户信息.添加 ...