react路由基础

1.目录

A. 能够说出React路由的作用
B. 能够掌握react-router-dom的基本使用
C. 能够使用编程式导航跳转路由
D. 能够知道React路由的匹配模式

2.目录

A. React路由介绍
B. 路由的基本使用
C. 路由的执行过程
D. 编程式导航
E. 默认路由
F. 匹配模式

3.react路由介绍

现代的前端应用大多都是SPA(单页应用程序),也就是只有一个HTML页面的应用程序。因为它的用户体
验更好、对服务器的压力更小,所以更受欢迎。为了有效的使用单个页面来管理原来多页面的功能,前
端路由应运而生。
A. 前端路由的功能:让用户从一个视图(页面)导航到另一个视图(页面)
B. 前端路由式一套映射规则,在React中,是URL路径与组件的对应关系
C. 使用React路由简单来说,就是配置路径和组件(配对)

4.路由的基本使用

4.1 基本使用

A. 安装:yarn/npm add react-router-dom
B. 导入路由的三个核心组件:Router/Route/Link
import { BrowserRouter as Router, Route, Link} from ‘react-router-dom’
C.使用Router组件包裹整个应用(重要)

<Router>
<div className=”App”>
//......省略页面内容
</div>
</Router>

A. 使用Link组件作为导航菜单(路由入口)

<Link to="/first">页面一</Link>

B. 使用Route组件配置路由规则和要展示的组件(路由出口)

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>页面一的内容</p>;
const App4 = () => {return (// 使用 Router 包裹整个应用<Router><div><h1>React路由基础</h1>{/* 指定路由入口  */}<Link to="/first">页面1</Link>{/* 指定路由出口 */}<Routes><Route path="/first" element={<First></First>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

4.2 常用组件说明

A. Router组件:包裹整个应用,一个React应用只需要使用一次
B. 两种常用Router:HashRouter和BrowserRouter
C. HashRouter:使用URL的哈希值实现(localhost:3000/#/first)
D. (推荐)BrowserRouter:使用H5的history API实现(localhost:3000/first)
E. Link组件:用于指定导航链接(a标签)
F. Route组件:指定路由展示组件相关信息

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>页面一的内容</p>;
const App4 = () => {return (// 使用 Router 包裹整个应用<Router><div><h1>React路由基础</h1>{/* 指定路由入口  */}<Link to="/first">页面1</Link>{/* 指定路由出口 */}{/* path:路由规则element:指定组件就展示在哪里Route 组件写在哪里,渲染出来的组件*/}<Routes><Route path="/first" element={<First></First>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

5.路由的执行过程

A. 点击Link组件(a标签),修改了浏览器地址栏中的url
B. React路由监听到地址栏url的变化
C. React路由内部遍历所有Route组件,使用路由规则(path)与pathname进行匹配
D. 当路由规则(path)能够匹配地址栏中的pathname时,就展示该Route组件的内容
在这里插入图片描述

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
const First = () => <p>页面一的内容</p>;
const Home = () => <h1>首页的内容</h1>;
const App4 = () => {return (// 使用 Router 包裹整个应用<Router><div><h1>React路由基础</h1>{/* 指定路由入口  */}<Link to="/first">页面1</Link><Link to="/home">首页</Link>{/* 指定路由出口 */}{/* path:路由规则element:指定组件就展示在哪里Route 组件写在哪里,渲染出来的组件*/}<Routes><Route path="/first" element={<First></First>}></Route><Route path="/home" element={<Home></Home>}></Route></Routes></div></Router>);
};
ReactDOM.createRoot(document.getElementById("root")).render(<App4></App4>);

在这里插入图片描述

6.编程式导航

A. 场景:点击登录按钮,登录成功后,通过代码跳转到后台首页,如何实现?
B. 编程式导航:通过JS代码来实现页面跳转
C. History是React路由提供的,用于获取浏览器历史记录的相关信息
D. push(path):跳转到某个页面,参数path表示要跳转的路径
E. go(n):前进或后退到某个页面,参数n表示前进或后退页面数量(比如:-1表示后退到上一页)
8.history.js

import React from "react";
import {BrowserRouter as Router,Routes,Route,Link,useNavigate,
} from "react-router-dom";
function Login() {let navigate = useNavigate();const handleClick = () => {navigate("/home");};return (<div><p>我是登录页</p><button onClick={handleClick}>登录</button></div>);
}const Home = () => {let navigate = useNavigate();function goBack() {navigate(-1);}return (<div><h1>后台首页</h1><button onClick={goBack}>返回上一页</button></div>);
};const App60 = () => {return (<Router><div><h1>编程式导航</h1><Link to="/login">去登录页面</Link><Link to="/home">首页</Link><Routes><Route path="/login" element={<Login></Login>}></Route><Route path="/home" element={<Home></Home>}></Route></Routes></div></Router>);
};export default App60;

index.js

import App60 from "./8history";
ReactDOM.createRoot(document.getElementById("root")).render(<App60></App60>);

7.默认路由

A. 问题:现在的路由都是点击导航菜单后展示的,如何在进入页面的时候就展示呢?
B. 默认路由:表示进入页面时就会匹配的路由
C. 默认路由path为:/
在这里插入图片描述

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

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

相关文章

开源项目:图像分类技术在医疗影像分析中的应用与实践

一、引言 在当今快速发展的医疗行业中&#xff0c;数字医疗正逐渐成为提升医疗服务质量和效率的关键力量。本项目旨在通过整合医药电商、远程问诊、慢病管理等多维度服务&#xff0c;为消费者和企业提供全面的医疗解决方案。项目的核心在于运用先进的图像分类技术&#xff0c;以…

回归测试:在不断变化的环境中确保软件的稳定性

软件开发是一个复杂的过程&#xff0c;需要不断变化和更新以满足客户不断变化的需求&#xff0c;但它们也可能产生新问题或导致旧问题重新出现。这就是回归测试的用武之地——它是在不断变化的环境中确保软件稳定性的重要组成部分。 在这篇文章中&#xff0c;我们将深入探讨什…

第40期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文)

项目介绍 本旅游网站系统采用的数据库是MYSQL &#xff0c;使用 JSP 技术开发&#xff0c;在设计过程中&#xff0c;充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…

UE5 文字游戏(1) 仅UI截图转换为texture2d(适用于window端)

目录 需求 思路 1.截图并读取到本地 2.本地读取图片并转换为纹理2d 效果展示 找了好多的解决办法&#xff0c;都不管用。这个算是折中的。 需求 将当前的用户控件&#xff08;ui&#xff09;截图下来&#xff0c;并赋值到一个texture2d上。 我的需求&#xff1a;文字游戏…

初学JavaWeb开发总结

0 什么是Web开发 Web: 全球广域网&#xff0c;又称万维网(www World Wide Web)&#xff0c;能够通过浏览器访问的网站。 Web开发&#xff0c;就是开发网站的&#xff0c;如&#xff1a;淘宝、京东等等。 1 网站的工作流程 流程&#xff1a; 浏览器先向前端服务器请求前端资…

Cesium 自定义Primitive-线

一、创作思路 1、创建一个自定义CustomPrimitive 2、可动态更新线的点位 3、方便后期绘制线 二、实现代码 1、创建一个CustomPolylinePrimitive类,并加入更新的代码 export default class CustomPolylinePrimitive {constructor(options) {this._props options;/*** 渲染列表…

EchoServer回显服务器封装与测试

目录 类实现 编译测试 这一篇本质上是为了TcpServer而做的一层封装,让外界调用更加简洁 参考上文 TcpServer服务器管理模块(模块十)-CSDN博客 类实现 echo.hpp #include "../server.hpp"class EchoServer { private:TcpServer _server;private:void OnConnect…

vite打包构建时环境变量(env)生成可配置的js文件

现实需求 在vite开发过程中&#xff0c;一些变量可以放在.env&#xff08;基础公共部分变量&#xff09;.env.dev&#xff08;开发环境&#xff09;、.env.production&#xff08;生产环境&#xff09;中管理&#xff0c;通常分成开发和生产两个不同的配置文件管理&#xff0c…

三天学会阿里分布式事务框架Seata-应用seata AT模式方案解决分布式事务问题

锋哥原创的分布式事务框架Seata视频教程&#xff1a; 实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;共计10条视频&…

dolphinscheduler海豚调度(四)钉钉告警

在之前的博文中&#xff0c;我们已经介绍了DolphinScheduler海豚调度的基本概念和工作流程&#xff0c;以及Shell任务和SQL任务的实践。今天&#xff0c;让我们来学习DolphinScheduler中的另一个重要功能&#xff1a;钉钉告警。 钉钉群添加机器人 在钉钉群添加机器人&#xf…

从http到websocket

阅读本文之前&#xff0c;你最好已经做过一些websocket的简单应用 从http到websocket HTTP101HTTP 轮询、长轮询和流化其他技术1. 服务器发送事件2. SPDY3. web实时通信 互联网简史web和httpWebsocket协议1. 简介2. 初始握手3. 计算响应健值4. 消息格式5. WebSocket关闭握手 实…

Redis 缓存数据库

redis 中文网 http://www.redis.cn/ redis.net.cn 两种数据库阵营 1.关系型数据库 MySQL Oracle DB2 SQL Server 等基于二维表结构存储数据的文件型磁盘数据库 缺点: 因为数据库的特征是磁盘文件型数据库, 就造成每次查询都有IO操作, 海量数据查询速度较慢 2.NoSQL数据库 …

lv20 QT 常用控件 2

1 QT GUI 类继承简介 布局管理器 输出控件 输入控件 按钮 容器 2 按钮示例 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QCheckBox> #include <QLineEdit> #include <QPushButton>class Widget : public QWidget {Q_OBJECTpublic…

击鼓传花游戏

有N个小朋友围成一圈玩击鼓传花游戏&#xff0c;将小朋友编号为1-N&#xff0c;从1号开始传花&#xff0c;每次传3个&#xff0c;拿到花的小朋友表演节目后退出。任给N&#xff0c;问最后一个表演的小朋友编号是多少&#xff1f;例如&#xff1a;输入5&#xff0c;从1号开始传花…

基于springboot+vue的共享汽车管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

3d模型版本转换器注意事项---模大狮模型网

在使用3D模型版本转换器时&#xff0c;有一些注意事项可以帮助您顺利完成模型转换并避免不必要的问题&#xff1a; 数据完整性&#xff1a;在进行模型转换之前&#xff0c;确保您的原始3D模型文件没有损坏或缺失数据。损坏的文件可能导致转换器无法正常处理或输出错误的结果。 …

力扣经典题目解析--滑动窗口最大值

原题地址: . - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a;…

小程序自定义组件

自定义组件 1. 创建-注册-使用组件 组件介绍 小程序目前已经支持组件化开发&#xff0c;可以将页面中的功能模块抽取成自定义组件&#xff0c;以便在不同的页面中重复使用&#xff1b; 也可以将复杂的页面拆分成多个低耦合的模块&#xff0c;有助于代码维护。 开发中常见的…

111790-37-5 ,生物素-氨基,一种生物素化合物,可与-NHS、-COOH反应

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;111790-37-5 &#xff0c;生物素-氨基&#xff0c;生物素氨基&#xff0c;Biotin-NH2&#xff0c;Biotin-amine 一、基本信息 【产品简介】&#xff1a;Biotin-NH2 provides a convenient biotinylation method for…