React 路由

  • 概述
  • 安装路由
  • 引入
  • 路由的使用
    • HashRouter
    • BrowserRouter
    • Routes 与 Route
    • Link
    • NavLink
    • Navigate
    • Outlet
  • 新增 Hook
    • useNavigate()
  • 其它

概述

与 React Router 5.x 的区别:
内置组件的变化:移除 <Switch/> ,新增<Routers>
语法的变化:component = {Home}element = {<Home/>}
新增多个hook:useParamsuseNavigateuseMatch

安装路由

安装(@6.3.0 最新版本)
方法一

npm i react router dom

方法二

npm i react-router-dom@6.3.0 --save

引入

import {BrowserRouter,HashRouter,Routes,Route,link} from 'react-router-dom'

路由的使用

组成部分<HashRouter><BrowserRouter><Routes/> 与 <Route><Link><NavLink><Navigate><Outlet>

HashRouter

<!-- 路由模型,HashRouter hash模型 -->
<HashRouter></HashRouter>

BrowserRouter

BrowserRouter:封装了 history 的创建,不需要再自己创建 history 对象。用于包裹整个应用

<!-- 路由模型,BrowserRouter history模型 -->
<BrowserRouter>
...
</BrowserRouter>

Routes 与 Route

Routes 与 Route:Route 是路由配置的具体实现,它置顶当路径匹配的时候渲染哪一个 UI
<Router> 要与 <Route> 一起使用,前者包裹后者
<Route index > 属性用于指定:匹配时是否为默认路由
<Route caseSensitive> 属性用于指定:匹配时是否区分大小写(默认为 > false)
<Route> 也可以嵌套使用,且可配合useRoutes()配置 “路由表” ,但需要通过 <Outlet> 组件来渲染其子路由。

<Routes><!-- Route组件 路由规则 --><!-- Navigate 实现重定向 --><Route path = '/' element = '{<Navigate to = '/nba'/>}'></Route><Route path = '/nba' element = '{<NBA/>}'><!-- 嵌套路由 --><!-- 默认路由: 使用index 设置 '/music' 为默认路由 --><Route path = '/news' element = '{<NEWS/>}'></Route><Route index path = '/music' element = '{<MUSIC/>}'></Route></Route><!-- 404 处理 --><Route path = '*'  element = '{<NotFond/>}'></Route></Routes>

Link

Link:修改URL,且不发送网络请求(路由链接)

NavLink

NavLink: 与 <Link> 组件类似,且可实现导航的 “高亮 ” 效果

Navigate

Navigate:实现重定向

 <!-- Navigate 实现重定向 -->
<Route path = '/' element = '{<Navigate to = '/nba'/>}'></Route>

Outlet

Outlet:二级路由输出

<!-- 二级路由输出 -->
<Outlet></Outlet>

完整结构

<!-- 路由模型,HashRouter hash模型 -->
<HashRouter></HashRouter>
<!-- 路由模型,BrowserRouter history模型 -->
<BrowserRouter><!-- Link 组件 a标签 --><Link to = '/nba'><Link/><!-- NavLink 组件 a标签,可设置选中效果:.active{} --><NavLink to = '/nba'><Link/><!-- Routes组件 一级路由输出 --><Routes><!-- Route组件 路由规则 --><!-- Navigate 实现重定向 --><Route path = '/' element = '{<Navigate to = '/nba'/>}'></Route><Route path = '/nba' element = '{<NBA/>}'><!-- 嵌套路由 --><!-- 默认路由: 使用index 设置 '/music' 为默认路由 --><Route path = '/news' element = '{<NEWS/>}'></Route><Route index path = '/music' element = '{<MUSIC/>}'></Route></Route><!-- 404 处理 --><Route path = '*'  element = '{<NotFond/>}'></Route></Routes>
</BrowserRouter>

嵌套路由

<!-- 嵌套路由路径必须跟上父路径 ,默认路由不需要跟上父路径 -->
<NavLink to = '/nba/news'></NavLink> | <NavLink to = '/music'></NavLink>
<!-- 二级路由输出 -->
<Outlet></Outlet>

新增 Hook

新增 Hook:useNavigate ()useRoutes()useParams()useSearchParams()useLocation()useMatch()useInRouterContext()useNavigationType()useOutlet()useResolvedPath()

今天先介绍第一个 useNavigate()

useNavigate()

useNavigate() 导航对象:返回一个函数来实现编程式导航
引入

import {useNavigate} from 'react-router-dom'

使用

const navigate = useNavigate()  //导航对象//方式一:指定具体的路径,第一个参数:路由 path ; 第二个 (可选) 参数:替换当前路由
navigate('/home',{replace:true})   //导航到 /home//方式二:传入数值进行前进或后退,类似于5.x中的 history.go()方法
navigate(-1)   //返回上一页

其它

path = "/main/:id"
//:id 动态id

React 路由 V6相关推荐

  1. React路由V6技术文档

    React Router 6 快速上手 1.概述 React Router 以三个不同的包发布到 npm 上,它们分别为: react-router: 路由的核心库,提供了很多的:组件.钩子. rea ...

  2. React Router v6 的路由切换实现方式

    首先需要先引入路由库,并配置好路由规则. 在React Router v6中,可以使用<Routes>和<Route>组件来定义路由规则. 例如: # 使用<Routes ...

  3. 在React中使用React Router v6

    具有多个视图的单页应用程序 (SPA) 需要有一种路由机制,以便在这些不同视图之间导航,而无需刷新整个网页.这可以通过使用诸如React Router之类的路由库来处理. 在本教程中,让我们看看如何使 ...

  4. [译] React 路由和 React 组件的爱恨情仇

    原文地址:The Love-Hate Relationship between React Router and React Components 原文作者:Kasra 译文出自:掘金翻译计划 本文永 ...

  5. vue react 路由history模式刷新404问题解决方案

    vue react 路由history模式刷新404问题解决方案 参考文章: (1)vue react 路由history模式刷新404问题解决方案 (2)https://www.cnblogs.co ...

  6. react路由守卫+重定向_React + Apollo:如何在重新查询后进行重定向

    react路由守卫+重定向 by Jun Hyuk Kim 金俊赫 React + Apollo:如何在重新查询后进行重定向 (React + Apollo: How to Redirect afte ...

  7. [react] 路由切换时同一组件无法重新渲染的有什么方法可以解决?

    [react] 路由切换时同一组件无法重新渲染的有什么方法可以解决? componentWillReceiveProps 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷 ...

  8. 16、React系列之 React 路由

    版权声明:本文为博主原创文章,未经博主允许不得转载. PS:转载请注明出处 作者:TigerChain 地址:http://www.jianshu.com/p/b55cf53e633a 本文出自 Ti ...

  9. RN和React路由详解及对比

    前言 在平时H5或者RN开发时,我们业务场景中大部分都不是单页面的需求,那这时我们就能使用路由在进行多页面的切换.下面会对比一下react路由和RN路由的本质区别和使用方法. 路由(routing)是 ...

最新文章

  1. 2022-2028年中国电子签名行业深度调研及投资前景预测报告
  2. Kail Linux渗透测试实训手册第3章信息收集
  3. 图像检索中相似度度量公式:各种距离
  4. 怎么写ERP实施方案?
  5. 使用实例工厂方法实例化_一些工厂实例
  6. 使用内存映射文件来共享数据
  7. 即使对象属性显示在控制台日志中,也无法访问
  8. 按值设置选择选项“已选择”
  9. 数据结构之链表及其Java实现_数据结构之链表及其Java实现
  10. Mono for Android 4.2初探
  11. 【C++入门】C++ 运算符的重载
  12. wp 一次简单的攻防训练
  13. linux下重启tomcat命令
  14. MySQL按日期依次统计
  15. 2020年7月 leetcode每日一题 C语言版本
  16. VPS8701 电源管理(PMIC) VPS8701
  17. 时间序列信号处理(四)——傅里叶变换和短时傅里叶变换python实现
  18. 面试问到关于数据库的问题,看了这篇够用了!
  19. webpack(重点)
  20. php中的pecl是什么,什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释

热门文章

  1. linux调用百度接口ocr快速准确提取图片中文字
  2. [评论]究竟什么才是自主研发和自主知识产权?
  3. 国内有哪些SAAS软件?SAAS软件有哪些优点?
  4. Auto Lisp 标注子样式_DXF组码来生成标注样式(标注文字样式、标注箭头样式)...
  5. 支付宝支付--alipay.data.dataservice.bill.downloadurl.query(查询对账单下载地址)
  6. 主机托管在人工智能时代可以做出何种贡献
  7. 计算机辅助设计技术认识的论文,计算机辅助设计论文(7页)-原创力文档
  8. 苹果iOS 16如何显示WiFi密码【操作教程】
  9. 设置自己喜欢的手机铃音
  10. dwz嵌入jqGrid