当前位置: 首页 > news >正文

React 学习笔记总结(八)

react-router6版本的学习笔记。

文章目录

  • 一、React Router 6
  • 二、router6版本的 安装 和 一级路由
    • 1. 安装router6版本
    • 2. Routes组件 和 Route的 element属性
  • 三、router6 之 重定向
  • 四、router6的 NavLink高亮
  • 五、router6 的 useRoutes路由表(重要)
  • 六、router6 的 嵌套路由
  • 七、router6 的 params参数
  • 八、router6 的 search参数
  • 九、router6 的 state参数
  • 十、router6 编程式路由导航
  • 十一、router6 的 useInRouterContext
  • 十二、router6 的 useNavigationType
  • 十三、router6 的 useOutlet
  • 十四、router6 的 useResolvedPath

一、React Router 6

React Router 6版本是从2021年11月开始,便是默认版本了。

与 5 相比 6的变化如下:
在这里插入图片描述

提示:因为router6版本新增了多个hook,所以官方明确推荐函数式组件。

二、router6版本的 安装 和 一级路由

1. 安装router6版本

rsf + tab 快捷键快速生成函数式组件。

# 安装react-router-dom6版本
yarn add react-router-dom
# 或者
"react-router-dom": "^6.6.2"

2. Routes组件 和 Route的 element属性

router6版本移除了Switch,让Routes替换了Switch。

router6版本的Route中的属性component 变化为了 element如下:

<Routes>
 	<Route path="/about" element={<About/>}/>
    <Route path="/home" element={<Home/>}/>
</Routes>

简单的示例:

import React from 'react';
import {NavLink,Routes,Route} from 'react-router-dom'
import About from "./pages/About";
import Home from "./pages/Home";

function App(props) {
    return (
        <div>
            <h1>App</h1>
            <div>
                <NavLink to="/about">About</NavLink>
                <br/>
                <NavLink to="/home">Home</NavLink>
            </div>
            <div>
                <Routes>
                    <Route path="/about" element={<About/>}/>
                    <Route path="/home" element={<Home/>}/>
                </Routes>
            </div>
        </div>
    );
}

export default App;

别忘记入口文件包裹,添加BrowserRouter:

import React from 'react'
import ReactDOM from 'react-dom'
import App from './App'
import {BrowserRouter} from 'react-router-dom'

ReactDOM.render(
    <BrowserRouter>
        <App/>
    </BrowserRouter>,
    document.getElementById('root'))

Routes 和 Route的总结:
在这里插入图片描述

三、router6 之 重定向

router6移除了Redirect,取而代之的是Navigate。

在这里插入图片描述
只要Navigate组件被渲染,就会修改路径,切换视图。

还需要注意replace属性用来控制跳转模式(默认为push模式)。

四、router6的 NavLink高亮

NavLink组件是高亮效果是通过active类展示的。

在这里插入图片描述

五、router6 的 useRoutes路由表(重要)

useRoutes很好用,一般项目中,都要单独写出来。

import React from 'react';
import {NavLink,useRoutes} from 'react-router-dom'
import About from "./pages/About";
import Home from "./pages/Home";

function App(props) {

    // fixme useRoutes的使用
    const element = useRoutes([
        {
          path:'/about',
          element:<About/>
        },
        {
            path:'/home',
            element:<Home/>
        },
    ])

    return (
        <div>
            <h1>App</h1>
            <div>
                <NavLink to="/about">About</NavLink>
                <br/>
                <NavLink to="/home">Home</NavLink>
            </div>
            <div>
                {element}
            </div>
        </div>
    );
}

export default App;

六、router6 的 嵌套路由

嵌套路由配置如下:
在这里插入图片描述

Outlet的使用:
在这里插入图片描述
NavLink的end属性使用:
在这里插入图片描述

七、router6 的 params参数

路由链接传递参数形式:
在这里插入图片描述

路由参数为:
在这里插入图片描述
使用useParams hook和useMatch hook来实现params参数传递:
在这里插入图片描述

八、router6 的 search参数

路由链接参数携带方式:
在这里插入图片描述

使用useSearchParams hook:

  • 注意search 和 setSearch的使用。
    在这里插入图片描述
    useLocation hook函数:(其实就是来获取一个路由明细数据的)
  • 该函数获取的对象如下:
    在这里插入图片描述

九、router6 的 state参数

路由链接格式:
在这里插入图片描述
使用useLocation hook函数格式如下:
在这里插入图片描述

十、router6 编程式路由导航

通过useNavigate hook函数进行操作:
在这里插入图片描述

使用useNavigate模拟页面的回退前进效果:
在这里插入图片描述

十一、router6 的 useInRouterContext

useInRouterContext hook函数:就是用来判断是否在路由的山下文中。

在这里插入图片描述

十二、router6 的 useNavigationType

在这里插入图片描述

十三、router6 的 useOutlet

在这里插入图片描述

十四、router6 的 useResolvedPath

在这里插入图片描述

相关文章:

  • 基于FPGA的UDP 通信(三)
  • 用HTML写一个2023跨年动画代码(烟花+自定义文字+背景音乐+雪花+倒计时)
  • 聊聊VMware的三种网络模式
  • 终极 3D 图形工具包:Ab3d.PowerToys 10.2.X Crack
  • C++ 类和对象(三)
  • R语言实现牛顿插值
  • jenkins结合gitlable企业集成部署实战
  • 前端面试题——React重点
  • 超级详细的PMP复习方法,3A拿下考试不发愁!
  • C语言进阶——通讯录
  • C#语言实例源码系列-实现停车场系统项目-下
  • 我辛辛苦苦做了一个月的项目,组长年底用来写了晋升PPT
  • 【云原生进阶之容器】第四章Operator原理4.2节--CRD
  • 牛客竞赛每日俩题 - Day14
  • Three.js一学就会系列:05 加载3D模型
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 5、React组件事件详解
  • Bootstrap JS插件Alert源码分析
  • co.js - 让异步代码同步化
  • Docker容器管理
  • linux学习笔记
  • node-glob通配符
  • php面试题 汇集2
  • Shell编程
  • spring boot 整合mybatis 无法输出sql的问题
  • 程序员该如何有效的找工作?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于web的全景—— Pannellum小试
  • 浏览器缓存机制分析
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一个完整Java Web项目背后的密码
  • 译米田引理
  • 仓管云——企业云erp功能有哪些?
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • #QT(TCP网络编程-服务端)
  • #考研#计算机文化知识1(局域网及网络互联)
  • #微信小程序:微信小程序常见的配置传值
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (十) 初识 Docker file
  • (一)80c52学习之旅-起始篇
  • (转)Mysql的优化设置
  • (转)socket Aio demo
  • (转)重识new
  • (状压dp)uva 10817 Headmaster's Headache
  • .a文件和.so文件
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET多线程执行函数
  • .NET开源快速、强大、免费的电子表格组件
  • @EnableConfigurationProperties注解使用
  • @NestedConfigurationProperty 注解用法