React-Router-6学习笔记

news2024/12/26 20:41:16

一、新建react项目

1、新建项目命令:

yarn create vite react-router --template react

2、在vsCode中打开项目

3、在vsCode打开命令终端,输入

yarn

4、执行yarn dev启动当前项目

yarn dev

5、删除多余的东西,保留app.jsx和main.jsx文件即可

6、重新打开终端,安装react-router(版本:"react-router-dom": "^6.16.0")

yarn add react-router-dom

二、快速搭建一个简单的路由demo

1、引入createBrowserRouter方法和RouterProvider组件

  • main.jsx文件引入: 

  • 代码: 
import { createBrowserRouter, RouterProvider } from 'react-router-dom'

 注意:

createBrowserRouter:创建路由实例在方法中定义路由path和组件的对应关系。

RouterProvider:作为一个组件渲染 并且传入createBrowserRouter执行之后生成的router实例。

 

2、调用 createBrowserRouter配置路由path和组件的对应关系生成router实例

  • main.jsx文件router:  

  • 代码:
const router = createBrowserRouter([
  {
    path:'/',
    element:<div>home</div>
  },
  {
    path:'/login',
    element:<div>login</div>
  }
])

3、渲染RouterProvider组件并传入router实例

  • main.jsx文件组件:

 

  • 代码:
<RouterProvider router={router}/>

三、抽离单独组件和路由独立文件

1、抽离单独组件

  •  新建一个文件夹,再新建三个jsx文件的组件

  • 其中一个代码:(其余三个代码差不多,换一下名字就行)
const Home = () => {
    return <div>
        Home
    </div>
}

export default Home
  •  在main.jsx文件里引入:

  • 将引入的组件放到对应的element里去

 

 运行结果展示:

 

 

2、配置路由独立文件

  • 新建一个文件用来抽离路由

 

  • 将main.jsx文件中对路由的配置移动过去,且将router进行导出 
import { createBrowserRouter } from 'react-router-dom'

import About from '../pages/About.jsx'
import Home from '../pages/Home.jsx'
import Login from '../pages/Login.jsx'

const router = createBrowserRouter([
    {
        path: '/',
        element: <Home />
    },
    {
        path: '/login',
        element: <Login />
    },
    {
        path: '/about',
        element: <About />
    }
])

export default router
  • main.jsx文件引入router(其他照旧)
import router from './router/index'

运行结果与上面一致

 

四、路由的两种模式说明

 1、history模式

注意:利用createBrowserRouter创建的路由属于history模式

  • 代码:
import { createBrowserRouter } from 'react-router-dom'

const router = createBrowserRouter([
    
])

2、hash模式 

注意:利用createHashRouter创建的路由属于hash模式

 

  • 代码:
import { createHashRouter } from 'react-router-dom'

const router = createHashRouter([

])

 

3、hash模式和history模式的区别

 注意:最简单的区别就是路由访问的时候一个有#一个没有。history模式需要后端的支持,hash模式不需要。

  • hash:http://localhost:5173/#/about
  • history: http://localhost:5173/about

 

 五、编程是导航实现

1、导入一个useNavigate钩子函数

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

2、执行useNavigate函数得到跳转函数

  • 代码:
const navigate = useNavigate()

3、在事件中执行跳转函数执行路由跳转

  • 整体代码:
import { useNavigate } from 'react-router-dom'

const Home = () => {
    const navigate = useNavigate()
    const goAbout = () => {
        navigate('/about')
    }
    return <div>
        <button onClick={goAbout}>go About</button>
    </div>
}

export default Home

六、路由记录替换

注意:路由跳转过去后,直接销毁上一页路由,点击返回无法返回上一页。 

  • 将跳转事件中的函数navigate函数第二个参数加上

 

  •  代码:
navigate('/', { replace: true })

七、路由跳转传参useSearchParams

1、searchParams传参

传参: 

注意:查询只字符串传参的方式比较简单,参数的形式以问号拼接到地址后面。

  •  直接在navigate函数里?加上传递的参数

 

  • 代码:
navigate('/about?id=123')

 

接收参数: 

  • 引入useSearchParams函数
import { useSearchParams } from 'react-router-dom'
  • 解构useSearchParams方法 ,通过get方法获取值

 

  • 代码: 
const [params] = useSearchParams()
let id = params.get('id')

 

代码演示: 

  • 在home页面点击button跳转到about页面

 

  • about页面已经将值显示在了连接上,和页面上 

 

 

2、useSearchParams传递多个参数

传递参数: 

  • 在原始传参的后面有&符号做传参的分割

 

  • 代码:
navigate('/about?id=123&name=简隋英')

接收参数: 

  • 引入useSearchParams函数
import { useSearchParams } from 'react-router-dom'
  • 解构useSearchParams方法 ,通过get方法获取值

  • 代码: 
    const [params] = useSearchParams()
    let id = params.get('id')
    let name = params.get('name')

代码演示: 

  • 在home页面点击button跳转到about页面

 

  • about页面已经将值显示在了连接上,和页面上 

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

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

相关文章

高校教务系统登录页面JS分析——皖西学院

高校教务系统密码加密逻辑及JS逆向 本文将介绍皖西学院教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密…

NLP算法面经 | 腾讯 VS 美团

作者 | 曾同学 编辑 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 后台回复『面试』加入讨论组交流噢 lz从3月初脚因打球扭伤了开始&#xff0c;投递简历&#xff0c;接二连三的面试鞭尸又面试&#xff0c;昨天才终于上岸了&#xff0c;分享经验~ 腾讯PCG看点&…

SSH 基础学习使用

什么是SSH 1.SSH SSH&#xff08;Secure Shell&#xff09; 是较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性的协议&#xff0c;利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 实际应用中&#xff0c;主要用于保证远程登录和远程通信的安全&#…

数字技术助力智慧公厕,让公厕变身为全新创新应用

在如今数字化的时代&#xff0c;数字技术的集成应用已经渗透到了生活的方方面面。其中一个令人瞩目的领域就是智慧公厕。以前只是简单的厕所&#xff0c;如今借助数字技术的力量&#xff0c;智慧公厕变得功能强大、智能高效。接下来&#xff0c;我们将以智慧公厕源头领航厂家广…

Retrieve Anything To Augment Large Language Models

简介 论文主要介绍了一套通过对比学习和蒸馏学习的方法&#xff0c;来增强学习了embedding向量&#xff0c;然后能够在知识增强&#xff0c;长上下文建模&#xff0c;ICL和工具学习等方面来增强大模型能力。

计算机网络第一章补充整理(计算机网络体系结构)

前言&#xff1a;以下整理内容&#xff0c;参考《计算机网络自顶向下》和哈工大的计网慕课 目录 计算机网络的体系结构的一些概念为什么采用分层结构&#xff1f;分层结构的优点分层结构的缺点 开放系统互连&#xff08;OSI&#xff09;参考模型物理层功能数据链路层功能网络层…

大数据flink篇之三-flink运行环境安装后续一yarn-session安装

前提&#xff1a; Hadoop 必須保证在 2.2 以上&#xff0c;且必須裝有 hdfs 服务。Hadoop安装后续会有相关说明。 具体的&#xff0c;在生产环境中&#xff0c;flink一般会交由yarn、k8s等资源管理平台来处理。本章主要讲解yarn模式下的session cluster模式。 flink Session-C…

FPC柔性电路板介绍及PCB设计经验规则总结

🏡《总目录》 目录 1,概述2,FPC的特点3,FPC设计十五条经验规则4,总结1,概述 FPC软板由于具有可弯曲折叠的特点,当前在消费电子,汽车电子和航空航天领域应用广泛。本文详细介绍FPC的特点并对FPC板设计中需要注意的经验原则进行总结。 2,FPC的特点 FPC的全称是Flexibl…

Python实现带图形界面的计算器

Python实现带图形界面的计算器 在本文中&#xff0c;我们将使用Python编写一个带有图形用户界面的计算器程序。这个程序将允许用户通过点击按钮或键盘输入数字和操作符&#xff0c;并在显示屏上显示计算结果。 开发环境准备 要运行这个计算器程序&#xff0c;您需要安装Pyth…

数据链路层—以太网协议

数据链路层—以太网协议 文章目录 数据链路层—以太网协议重新认识四层模型以太网局域网特点以太网帧格式碰撞领域和避免碰撞算法认识MAC地址令牌环网交换机认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对TCP协议的影响数据跨网段传输的过程 重新认识四层模型 TCP/IP分层模型…

C# Convert和BitConverter类学习

前言&#xff1a; C# Convert是一个比较好用的强制转换&#xff0c;相比我们之前用的(int)或者是类型.Parse()&#xff0c;Convert给我们提供了很多的选项&#xff0c;特别是对于有字节要求的变量&#xff0c;Convert简直就是C#编程的福音&#xff0c;BitConvert对于byte数组转…

数据结构的奥秘:算法与实际应用的完美融合

文章目录 第一部分&#xff1a;数据结构的精髓1. 数组&#xff08;Array&#xff09;2. 链表&#xff08;Linked List&#xff09;3. 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;4. 树&#xff08;Tree&#xff09;5. 图&#xff08;Graph&#xff09…

fastjson 1.2.47 远程命令执行漏洞

fastjson 1.2.47 远程命令执行漏洞 文章目录 fastjson 1.2.47 远程命令执行漏洞1 在线漏洞解读:2 环境搭建3 影响版本&#xff1a;4 漏洞复现4.1 访问页面4.2 bp抓包&#xff0c;修改参数 5 使用插件检测漏洞【FastjsonScan】5.1使用説明5.2 使用方法5.2.1 右键菜单中&#xff…

车载电子电器架构 —— 国产基础软件生态简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

python二次开发CATIA:测量曲线长度

以下代码是使用Python语言通过win32com库来控制CATIA应用程序的一个示例。主要步骤包括创建一个新的Part文件&#xff0c;然后在其中创建一个新的几何图形集&#xff0c;并在这个集合中创建一个样条线。这个样条线是通过一组给定的坐标点来创建的&#xff0c;这些点被添加到集合…

利用深度学习进行组水平大脑解码

摘要 脑成像数据解码越来越受欢迎&#xff0c;可用于脑机接口和神经表征等方面的研究。解码通常是特定于个体的&#xff0c;由于不同被试之间的差异较大&#xff0c;因而不能很好地泛化。克服这一问题的技术不仅需要能够提供更丰富的神经科学见解&#xff0c;而且还能使组水平…

Docker Compose命令讲解+文件编写

docker compose的用处是对 Docker 容器集群的快速编排。&#xff08;源码&#xff09; 一个 Dockerfile 可以定义一个单独的应用容器。但我们经常碰到需要多个容器相互配合来完成某项任务的情况&#xff08;如实现一个 Web 项目&#xff0c;需要服务器、数据库、redis等&#…

【Windows日志】记录系统事件的日志

文章目录 一、概要二、Windows日志介绍 2.1 应用程序日志2.2 系统日志2.3 安全日志 三、查看与分析日志四、常见事件ID 4.1 登录事件 4.1.1 4624登陆成功4.1.2 4625登陆失败 4.2 特权使用4.3 账户管理事件4.4 账户登录事件5.2 事件ID汇总 一、概要 Windows主要有以下三类日…

Nginx:反向代理(示意图+配置)

示意图&#xff1a; 反向代理 反向代理&#xff08;Reverse Proxy&#xff09;是代理服务器的一种&#xff0c;它代表服务器接收客户端的请求&#xff0c;并将这些请求转发到适当的服务器。当请求在后端服务器完成之后&#xff0c;反向代理搜集请求的响应并将其传输给客户端。…

NewStarCTF2023week2-游戏高手

js代码审计&#xff0c;定位到输出flag的地方 首先进行了一个条件判断&#xff0c;如果游戏分数大于100000&#xff0c;就会执行下面的代码块&#xff1b; 然后创建了一个 XMLHttpRequest 对象&#xff0c;用于向服务器下的/api.php发送 POST 请求&#xff1b; 后面代码用于处…