[react基础]关于v6版本route的变化,以及常见应用模式

news2025/2/25 21:16:53

该说不说,在做这些之前,你要记得一件事

route不是react或者vue等原本就有的组件!需要你手动下载!然后导入!

原本的框架只是最终挂载到一个html界面上!!!

别再问我为啥你扒下来的代码为啥不好使了!     讨厌 > _< 

 下载指令去看我另一篇推文

今天复盘了一下自己的实训项目以及课程设计,两个东西混用了不同版本的route导致产生了很多混淆内容,今天在这边辨析一下,顺便说明v6版本中我们倾向于怎么做

1.Router -> BrowersRouter

首先就算Router被细化成了多个不同的东西,使用区别如下

<Router>
    v5版本以前
</Router>

<BrowersRouter>
    v6版本以后
</BrowersRouter>

一共被分成了:

BrowerRouter:适用于常见的web应用

HashRouter:适用于静态页面(url不太一样)

MemoryRouter:适用于服务器环境(一些根本用不到url的情况是这样的)

而原本的Router不能再使用了

2.Switch -> Routes

其实除了改了名字以后其他没啥变化,只是承担具体路由的工具

(名字更加直白可懂了)

3.Route

对于每个基本路由来说,其实这个几乎没有改动,只要注意几点

1.path属性不是常见的对象或者jsx语法,只是一个字符串就行了

2.现在子组件内容有两种方法获取

element:这个属性允许你直接使用jsx语法去写dom标签

component:这个属性需要你直接输入一个组件对象,这个可以外部引入

至于link....我觉得属实是画蛇添足了

4.跳转的变化

其实有的时候我们偶然获取到一些项目,你会发现用v5里面仍然存在一些路由跳转的标签or属性,但是实际上有一些是作者自行封装的.

v5版本支持的仍然是原生js的路由跳转,即使用history对象,但是获取这个对象的方法和原生不一样

const history = useHistory();

//接下来再对history对象进行一些其他的操作

这个东西的用法和原生是一模一样的,虽然只是你手动获取命名的对象

但是再v6版本时候,这个路由跳转对象变了,使用方法也取消掉了原本history具有的功能,只剩跳转了

const navigate = useNavigate();

// 使用 navigate 函数进行路由跳转
navigate('/about');

现在这是获取一个路由跳转对象,或者说是函数,然后输入数值完成跳转

5.在react中的子路由偏好

刚开始学react的时候,我把子路由写成这样

报错了嘛?没有

能跑嘛?不能

咋回事?不知道

其实这就是典型的vue后遗症,总是想把路由全都托管到一起,组合在一个文件里面

但是react的子路由模式更倾向于,将子路由放在父组件内部自行管理,只是最后根据url决定显示哪些罢了.

在React Router中,通常更倾向于将子路由的定义分离到各自的组件中,以保持组件的独立性和可重用性。这意味着每个组件负责自己的子路由,而不需要将所有路由配置都放在一个地方。这种方法更加模块化,有助于更好地组织代码和维护路由结构。

在Vue中,通常会使用嵌套路由将父子关系直观地表达在一个地方,这对于某些场景可能更方便,但也可能导致路由配置相对集中在一个文件中。

选择使用哪种方式取决于你的项目需求和个人偏好。React Router的方式更加分散,适用于需要更灵活路由组织和组件独立性的场景。而Vue Router的方式更集中,适用于需要直观表示嵌套关系的场景。无论你选择哪种方式,都可以根据具体情况来决定如何组织你的路由结构。

举个例子

import { BrowserRouter as Router, Link, Route } from 'react-router-dom';

//父组件
function ParentComponent() {
  return (
    <div>
      <Route path="/parent/child1" component={ChildComponent1} />
      <Route path="/parent/child2" component={ChildComponent2} />
    </div>
  );
}

//子组件
function ChildComponent1() {
  return <h2>子组件1内容</h2>;
}

//子组件
function ChildComponent2() {
  return <h2>子组件2内容</h2>;
}

//根组件
function App() {
  return (
    <Router>
      {/* 路由规则和组件的对应关系 */}
      <Route path="/parent" component={ParentComponent} />
    </Router>
  );
}

另外这里要注意一个问题,子组件中要包含父组件的路由作为前缀!

 所以我们经常可以见到工程中,会在根组件上加上一些基础路由

 差不多这样子,后面有别的需求我再补充就是了

6.工程中的常见用法举例:(侧边栏路由导航)

(1)首先先单独封装一个路由对象的数组

 

(2)在你的侧边栏中使用map语句遍历,创建条目

(3)为每个条目添加跳转的点击事件即可

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

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

相关文章

pyCharm远程DEBUG

第一步&#xff0c;添加一个远程机器的解释器 ssh 远程机器解释器添加&#xff0c; 我本地ssh有配置目标机器。 如果没配置&#xff0c;那就选着new server configuration 新增一个。 interpreter 指定远程机器python&#xff0c; &#xff08;机器上有多个版本python里尤其要…

【LeetCode-中等题】22. 括号生成

文章目录 题目方法一&#xff1a;递归&#xff1a;方法二&#xff1a;递归回溯 题目 方法一&#xff1a;递归&#xff1a; 递归入口 空子结果集&#xff0c;左括号数目&#xff08;初始为0&#xff09;&#xff0c;右括号数目&#xff08;初始为0&#xff09; 递归出口 若左括…

Eviews用向量自回归模型VAR实证分析公路交通通车里程与经济发展GDP协整关系时间序列数据和脉冲响应可视化...

全文下载链接&#xff1a;http://tecdat.cn/?p27784 河源市是国务院1988年1月7日批准设立的地级市&#xff0c;为了深入研究河源市公路交通与经济发展的关系&#xff0c;本文选取了1988&#xff0d;2014年河源市建市以来24年的地区生产总值&#xff08;GDP&#xff09;和公路通…

vue 子组件向父组件传递参数 子传父

子组件中写&#xff1a; this.$emit(RowCount,res.data.RowCount); 父组件中写&#xff1a; getMFGLRowCount(val){ //父组件中的方法: 接收子组件传过来的参数值赋值给父组件的变量 //this.totalCount val; alert("这…

CSS整理

目录 CSS中的& 弹性&#xff08;display:flex&#xff09;布局 flex的属性 justify-content align-items flex:1 flex属性 flex-grow&#xff1a;项目的放大比例 flex-shrink&#xff1a;收缩 flex-basis&#xff1a;初始值&#xff0c;项目占据的主轴空间&…

javascript | 变量、函数、属性的命名规则

javascript标识符的命名规则 变量、函数、属性的名字、或者函数的参数&#xff0c;都可称为标识符。标识符可以是按照下列格式规则组合起来的一个或者多个字符。 第一个字符必须是一个字母、下划线_、或美元符号$。数字不可以作为标识符的首字符。其他字符可以是数字、字母、…

华为云云耀云服务器L实例评测|在 Centos Docker 中使用Nginx部署Vue项目

目录 前言 项目构建 使用CentOS部署 安装Nginx 配置Nginx 项目启动 访问重定向 使用Docker部署 编写docker文件 dockerfile nginx dockercompose 项目启动 前言 本期我们测试在云耀云服务器L实例中分别演示如何在 系统镜像Centos 与 应用镜像 Docker 中使用Nginx…

Java多线程(三)多线程的模式--(阻塞队列,定时器,线程池)

多线程的模式--&#xff08;阻塞队列&#xff0c;定时器&#xff0c;线程池&#xff09; 多线程模式&#xff1a; 阻塞队列&#xff08;线程安全&#xff09; 重点是如何自己去实现这种数据结构&#xff1a; ​编辑 定时器&#xff1a; 实现一个定时器&#xff1a; 线程…

两种解法解决LCR 008. 长度最小的子数组【C++】

文章目录 [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/description/)解法暴力解法滑动窗口&#xff08;双指针法&#xff09; LCR 008. 长度最小的子数组 解法 暴力解法 //暴力解法&#xff1a; //使用双for循环依次遍历数组&#xff0c;罗列出所有情况…

HTML的段落中怎么样显示出标签要使用的尖括号<>?

很简单&#xff1a; 符号 < 用 < 替代&#xff1b; 符号 > 用 > 替代。 示例代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>HTML中怎样打出尖括号</title> </head> <b…

AI图片生成 discord 使用midjourney

参考: 不用找咒语了&#xff01;Midjourney图生文功能特征解析&#xff0c;玩转Describe命令&#xff0c;快速搞定AI绘画_哔哩哔哩_bilibili 1 登录 discord 2 点发现 找 midjourney 3 创建 服务器 -> 亲自创建 4 选 仅供我和我的朋友使用 5 起个 服务器名字 6 加bot 由于…

常见的旅游类软文类型分享

假期将至&#xff0c;越来越多人选择出门旅游度过假期&#xff0c;那么各大旅游品牌应该怎么让自己的旅游软文在众多品牌中脱颖而出呢&#xff1f;接下来媒介盒子就给大家分享几个最能吸引受众的旅游类型软文。 一、攻略类软文 和普通的攻略不一样&#xff0c;普通的攻略以用户…

Element--生成不定列的表格

1、对于一些场景&#xff0c;前端可能需要展示不定列数的数据&#xff1b;譬如考勤&#xff0c;可能有的人是一天一次上下班打卡&#xff0c;有的人是一天两次上下班打卡。这个时候统计就需要更具人员做不同的展示&#xff0c;不能固定在前端写死列的属性。 2、代码示例 &…

Linux命令200例:nohup用于在后台运行命令

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

直播APP源码搭建:核心的服务器系统

在现代科技的推动下&#xff0c;网络衍生出了各种各样的技术&#xff0c;每个技术都被应用到需要的APP上&#xff0c;直播APP源码搭建出来的APP就是其中的一个&#xff0c;然而&#xff0c;这些技术能够成功的在直播APP源码搭建的APP中稳定的为用户们提供功能与服务&#xff0c…

内网穿透实现Windows远程桌面访问Ubuntu,简单高效的远程桌面解决方案

文章目录 前言1. ubuntu安装XRDP2.局域网测试连接3.安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 前言 XRDP是一种开源工具&#xff0c;它允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP外&#xff0c;xrdp工具还接受来自其他RDP客户端(如Fre…

Windows环境下Springboot3+Graalvm+Idea 打包成原生镜像 踩坑

https://github.com/oracle/graal/https://github.com/graalvm/graalvm-ce-builds/releases/对应关系graalvm-ce-java17-windows-amd64-X.X.X.zipnative-image-installable-svm-java17-windows-amd64-X.X.X.jar本人使用:graalvm-ce-java17-windows-amd64-23.0.1.zipnative-imag…

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例评测使用

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

Canonical 发布公告,Ubuntu可以在 Windows 10 商店找到

导读Canonical 前几天正式发布公告称&#xff0c;“Windows 10 Loves Ubuntu”&#xff0c;其 Ubuntu 16.04 LTS 在 Windows 10 商店中以应用的方式出现&#xff0c;这是继 openSUSE 及 SLES 之后&#xff0c;又一款可以从 Windows 10 商店中下载的 Linux 操作系统。 一些用户已…

Ubuntu----Linux命令-----防火墙(查看、关闭、启动)

一、查看防火墙状态 命令&#xff1a;ufw status 说明&#xff1a; 活动&#xff1a;防火墙是开启的 不活动&#xff1a;防火墙是关闭的 二、开启防火墙 命令&#xff1a;sudo ufw enable 开启防火墙后&#xff0c;可以查看防火墙状态 三、关闭防火墙 命令&#xff1a;sud…