React 学习笔记总结(八)

news2024/10/6 12:46:08

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编写自己的OPTEE CA/TA demo

前言 &#xff08;默认你对optee有一点点点点了解&#xff09; 一、hello_world分析 在\optee_examples\hello_world目录下&#xff0c;optee给出了一个简单的CA/TA示例。 hello_world的结构如下&#xff1a; 1、CA端 A.main.c main.c文件有效代码如下&#xff1a; #incl…

vue2组件之间的数据传递(组件之间使用mitt第三方模块创建事件中心进行订阅与发布)

目录 一、组件之间的通信 1、组件之间的关系&#xff1a;父子关系、兄弟关系、跨级关系 2、父子组件之间的通信(数据传递)&#xff1a; 3、兄弟组件之间的通信&#xff08;数据传输&#xff09;&#xff1a; 4、跨级组件之间的通信&#xff1a;provide / inject 类似于消息…

正则表达式 - 匹配开头、结尾、中间 - 某天气网站网页源代码分析

背景 爬取某天气网站数据&#xff0c;使用 Selenium 能够得到渲染数据后的页面源代码。特定日期的真实数据肯定只有1份&#xff0c;展示在页面表格中&#xff0c;但是源代码中提供了3个都有数据的 Table&#xff0c;而其中2个Table 的数据是通过 math.random 生成后填充&#…

ASP.NET Core 3.1系列(25)——Autofac中的泛型注册和程序集注册

1、前言 在实际开发业务中&#xff0c;泛型的应用非常广泛&#xff0c;而这也就产生了一个问题&#xff1a;泛型类和泛型接口该怎么注册&#xff1f;难道要开发者一行一行去写泛型构造参数吗&#xff1f;同时&#xff0c;实际业务中往往也会对项目进行分层设计&#xff0c;例如…

【十】Netty WebSocket协议栈开发

Netty WebSocket协议栈开发背景介绍HTTP 协议的弊端WebSocket 介绍WebSocket 特点WebSocket 连接建立Socket生命周期WebSocket关闭开发WebSocket 服务端功能介绍流程图代码实现jar 依赖WebSocket 服务端启动类 WebSocketServer服务端业务处理类 WebSocketServerHandlerWebSocke…

nacos的部署以及nacos启动报错“Unable to start embedded Tomcat”(部分解决)

这几天有一个基于yshop改编的SpringBoot的项目开发需求&#xff0c;本地需要下载使用nacos-server进行部署和开发&#xff0c;于是下载了nacos-server-2.0.3,并将其解压在一个没有中文路径的地方。 接下来根据nacos需求&#xff0c;设置了JAVA_HOME的环境变量&#xff1a; 修…

防火墙NAT综合实验

实验要求 1.内网网段配置动态pat将内网192.168.1.0网段映射到防火墙外网接口上 2.dmz区域服务器做静态pat将两台服务器对应到一个外网接口的不同端口 3.开启nat 控制 4.对内网网段192.168.2.0或豁免能够发访问外网 5.并通过远程进行验证 实验命令 ciscoasa# conf t cisco…

如何快速做好SEO优化?怎样综合查询seo?

本篇接着讲新手优化网站的技巧及应该注意什么方面&#xff0c;一起来看看吧&#xff01; 6.优化你的图片 从可读性的角度来看&#xff0c;图像非常重要。他们帮助可视化你的内容&#xff0c;帮助读者更容易理解。但它们对SEO也很重要&#xff0c;因为它们可以帮助你的网站被抓…

MySQL——SQL逻辑语句相同但是性能相差巨大?

在 MySQL 中&#xff0c;有很多看上去逻辑相同&#xff0c;但性能却差异巨大的 SQL 语句。对这些语句使用不当的话&#xff0c;就会不经意间导致整个数据库的压力变大。 下面通过三个案例对SQL语句进行分析&#xff1a; 案例一&#xff1a;条件字段函数操作 假设你现在维护了…

51单片机特性概览

51单片机指的是使用英特尔8051指令集的微控制器。 首先要了解什么是微控制器。 一、什么是微控制器&#xff1f; 微控制器包括&#xff1a; CPU其他组件(可能包括RAM,ROM,I/O端口&#xff0c;定时器、计数器、通信端口)&#xff0c; 而微处理器只包含CPU。 一开始只有微处…

适应性学习率

目录 适应性学习率 Adaptive learning rate 为什么不是临界点仍会导致训练停止 示例一示例二 RMSRMSPropAdam学习率还和时间有关 Learin Rate DecayWarm up 2021 - 类神经网络训练不起来怎么办(三) 自动调整学习率 (Learning Rate)适应性学习率 Adaptive learning rate 一般…

团队协作软件如何整合内容营销

每个内容营销团队都以不同的方式管理他们的流程和工作流程——无论是为成长中的团队扩展编辑流程&#xff0c;还是视频和社交媒体活动规划。优化内容营销项目管理就是降低复杂性和更有效地管理工作。 但是&#xff0c;为什么正确地做到这一点如此重要呢&#xff1f;与对外营…

第一个uni-app程序小结

工院喵开发小结 这是一篇关于uniapp新手写微信小程序的收获和踩坑总结。 目录工院喵开发小结一、架构二、收获1. 一些扩展组件的使用a. uni-uib. uni-listc. 栅格系统d. uni.scss辅助样式e. uni-easyinput 增强输入框f. uni-fab悬浮按钮g. swiper2. api管理3. 页面跳转传参4. …

iOS 语言基础初探 Xcode 工具

前言&#xff1a; 作为 iOS 开发的主要应用工具之一&#xff0c;Xcode 已经越来越被业内认可&#xff0c;本章节将针对此官方开发工具&#xff0c;为同学解读 Xcode 的基本情况&#xff0c;认识 Xcode 的工程体系&#xff0c;带领大家进入 iOS 开发第一步。 &#x1f3b6;文章目…

SAP入门技术分享四:模块化程序

模块化程序1.子程序概要2.子程序定义3.子程序参数&#xff08;1&#xff09;传递参数的方法&#xff08;2&#xff09;定义参数类型&#xff08;3&#xff09;参数与结构体&#xff08;4&#xff09;参数与内表4.调用子程序&#xff08;1&#xff09;调用程序内部子程序&#x…

vue npm link关联本地组件库

什么是 npm link 就是把你在本地开发好的文件做一个映射和链接&#xff0c;当你在 本地开发一个a项目&#xff0c;你的本地b项目想使用a项目下的组件 这时候就是需要进行npm link链接起来 a项目的运行效果 b项目的运行效果&#xff1a; 想要实现的效果&#xff1a;(在b项目上…

Oracle SQL Developer使用dbms_output.put_line显示输出

dbms输出 点击DBMS输出左侧的号&#xff0c;选择需要输出的数据库&#xff0c;点击确定 与步骤2选择相同数据库&#xff0c;右击数据库&#xff0c;选择打开SQL工作表(T) 在工作表中执行语句 declare --定义&#xff0c;相当于声明属性。t_a varchar2(20);--声明自定义属…

怎么写一篇计算机SCI论文初稿? - 易智编译EaseEditing

一、SCI论文的要求 SCI论文的核心是创新性。对于这个方面来说主要就是针对于论文的观点正确&#xff0c;文字通畅&#xff0c;逻辑严密&#xff0c;结构合理&#xff0c;结论有创新等等。 二、SCI论文格式规范 每一个SCI期刊都有自己特定的宗旨、栏目和专业定位&#xff0c;投…

TCP通信机制:三次握手、四次挥手、滑动窗口

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP通信机制1. TCP三次握手2. TCP四次挥手3. TCP连接与数据传输过程4. TCP滑动窗口机制5. server服务端…

这套设备管理方案助你效率10倍提升

车间工厂等货物人员密集场所&#xff0c;对消防安全的要求很高。消防设备管理自然是生产制造型企业的核心之一。消防设施的有效管理&#xff0c;既要保证日常巡检工作的有效性&#xff0c;又要在设备出现故障后及时响应。在此基础上还要对整体管理情况进行数据分析&#xff0c;…