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

React Router

一、简介

        react router是一个构建基于react应用的路由管理库。允许你在程序中定义不同的路由和导航规则。以实现不同的url路径显示不同的组件。

二、相关技术

<Router><div><ul id = "menu"><li><Link to = "/home">Home</Link></li><li><Link to = "/hello">Hello</Link></li><li><Link to = "/about">About</Link></li></ul><div id = "page-container"><Route path = "/home" component = {Home} /><Route path = "/hello" component = {Hello} /><Route path = "/about" component = {About} /></div></div>
</Router>

Link - 导航跳转组件

Router -  路由配置

1.React Router API

Link -> <Link to = '/about'>About</Link> 普通连接,不会触发浏览器刷新

NavLink ->  <NavLink to = '/about' activieClassName = "selected">About</NavLink >       

Prompt ->

 <Prompt when = {fromIsHalfFilledOut}  message = "Are you sure you want to leave"/>

Redirect -> 

 <Route  exact path = "/" render = {() => (loggedIn ? (<Redirect to "/dashboard"/>):(<PublicHomePage/>))} />

2.url传参

react 组件可以通过 match props 获取Route 中url对应的占位符值。

// 通过match属性获取Route Path中的占位符值
const Topic = ({match}) => (<h1>Topic {match.params.id}</h1>
); export default class RouterParams extends React.PureComponent{render(){return (<Router><div><ul id = "menu"><li><Link to = '/topic/1'>Topic 1</Link></li><li><Link to = '/topic/2'>Topic 2</Link></li><li><Link to = '/topic/3'>Topic 3</Link></li></ul><div id = "page-container"><Route path = "/topic/:id" component = {Topic} /></div></div></Router>);}}

默认情况下,直接修改浏览器地址是不会触发跳转的,必须通过Link或者其它React routeApi实现跳转。

3.嵌套路由

1.每个React组件都是路由容器。

2.React Router的声明式语法可以方便的定义嵌套路由。

举个多级目录嵌套路由例子

// 一级目录
export const Category = () => {return () => {<Router><div><ul id = "menu"><li><Link to = "/category/1">Category 1</Link></li><li><Link to = "/category/2">Category 2</Link></li><li><Link to = "/category/3">Category 3</Link></li></ul><div id = "nav-container"><Route path = "/category/:id" component = {SubCategory}></div></div></Router>}
}// 二级目录
export const SecondCategory = ({match}) => {return () => {<Router><div><ul id = "menu"><li><Link to = "/category/${match.params.id}/sub/1">Category 1</Link></li><li><Link to = "/category/${match.params.id}/sub/2">Category 2</Link></li><li><Link to = "/category/${match.params.id}/sub/3">Category 3</Link></li></ul><div id = "page-container"><Route path = "/category/:id/sub/:subId" component = {Page}></div></div>            </Router>}
}// 页面内容
export const Page = ({match}) =>{const data = getPageData(match.params.id, match.params.subid);return parseData(data);
}

 4.React router全局配置

 feature1/route.js

import Feature1Component from './FeatureComponent';const routes = [{path: "/feature1",component: Feature1Component,exact: true}
];export default routes;

route-config.js

import feature1Routes from "./feature1/route"
import feature1Routes from "./feature2/route"
const routes = [...feature1Routes,...feature2Routes,
]

App.js

import {BrowserRouter as Router, Route, Switch} from 'react-router-dom'
const App = () => {return (<Router><Switch> // 路由选择{routes.map({route,index}=>{<Route key = {index}path = {route.path}exact = {route.exact} // 精确匹配render = {props => <route.component {...props}/>/>})}</Switch></Router>);
}

相关文章:

React Router

一、简介 react router是一个构建基于react应用的路由管理库。允许你在程序中定义不同的路由和导航规则。以实现不同的url路径显示不同的组件。 二、相关技术 <Router><div><ul id "menu"><li><Link to "/home">Home<…...

https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?

首先解释一下什么是HTPPS 简单来说&#xff0c; https 是 http ssl&#xff0c;对 http 通信内容进行加密&#xff0c;是HTTP的安全版&#xff0c;是使用TLS/SSL加密的HTTP协议 Https的作用&#xff1a; 内容加密 建立一个信息安全通道&#xff0c;来保证数据传输的安全&am…...

C++中声明友元

C中声明友元 不能从外部访问类的私有数据成员和方法&#xff0c;但这条规则不适用于友元类和友元函数。要声明友元 类或友元函数&#xff0c;可使用关键字 friend&#xff0c;如以下示例程序所示&#xff1a; 使用关键字 friend 让外部函数 DisplayAge( )能够访问私有数据成员…...

【GPT-3.5】通过python调用ChatGPT API与ChatGPT对话交流

文章目录 一、引言二、AIGC简介三、OpenAI介绍四、GPT-3.5介绍五、获得OpenAI API Key六、调用ChatGPT API实现与ChatGPT对话七、参考链接 一、引言 ChatGPT 的火爆&#xff0c;成功带火了AIGC&#xff0c;让它进入大众的视野。 ChatGPT 和Whisper API 开发者现在可以通过API将…...

Vatee万腾的科技探险:vatee数字化力量的前瞻征途

在Vatee万腾的科技探险中&#xff0c;我们领略到了一场数字化力量的前瞻征途&#xff0c;这是一次引领未来的创新之旅。Vatee万腾以其独特的科技理念和数字化力量&#xff0c;开启了一次引领行业的前瞻性征途&#xff0c;为数字化未来描绘出了崭新的篇章。 Vatee万腾的数字化力…...

github使用token认证

向github提交代码时报错&#xff1a;Support for password authentication was removed on August 13, 2021. Please use a personal access token instead。大概意思就是&#xff0c;原先的密码凭证从2021年8月13日开始就不能用了&#xff0c;后续必须使用个人访问令牌&#x…...

基于C#实现线段树

一、线段树 线段树又称"区间树”&#xff0c;在每个节点上保存一个区间&#xff0c;当然区间的划分采用折半的思想&#xff0c;叶子节点只保存一个值&#xff0c;也叫单元节点&#xff0c;所以最终的构造就是一个平衡的二叉树&#xff0c;拥有 CURD 的 O(lgN)的时间。 从…...

AI智能客服搭建教程附带免费源码

*名称* *版本要求* 服务器 CPU 2核心 ↑运存 4G ↑宽带 5M ↑ 服务器操作系统 Linux Centos7 运行环境 Nginx 1.18 PHP 7.3 MYSQL 5.6 服务器配置及环境要求 PHP设置 一、安装PHP扩展插件:fileinfo、redis、 sg11 二、删除PHP对应版本中的 pcntl_signal 、pcntl_signal_dis…...

Shell脚本:Linux Shell脚本学习指南(第三部分Shell高级)四

十九、Linux Shell trap命令&#xff1a;捕获信号 到目前为止&#xff0c;我们在本教程所见的脚本中还没有需要信号处理功能的&#xff0c;因为它们的内容相对比较简单&#xff0c;执行时间很短&#xff0c;而且不会创建临时文件。而对于较大的或者更复杂的脚本来说&#xff0…...

牛气霸屏-快抖云推独立版V1.6.7

介绍 快抖云推全插件独立版是最近很火的牛气霸屏系统独立版&#xff0c;牛气霸屏系统就是商家通过系统在线创建抖音或快手霸屏活动&#xff0c;并生成该活动的爆客二维码&#xff0c;用户通过扫二维码即可参加活动&#xff08;活动可以是领取卡劵&#xff0c;抽奖等&#xff0…...

ffmpeg下载与配置环境变量

FFmpeg 是一个强大的多媒体框架&#xff0c;可以让用户处理和操纵音频和视频文件。具有易于使用的界面&#xff0c;用户可以在 Windows、Mac 或 Linux Ubuntu 系统上下载 FFmpeg 并将其提取到文件夹中。然后&#xff0c;该软件可以加入 PATH 环境变量中就可以快捷的使用软件了.…...

那些年,关于CKACKS认证的那些事儿?

前言 遥想2020年的年初&#xff0c;疫情封城封村之际&#xff0c;工作之余在B站将尚硅谷的linux中的k8s视频完整系统的学习了一遍&#xff0c;自此像是打通了任督二脉一般&#xff0c;开启了对k8s的探索之旅&#xff0c;一路也是磕磕绊绊的在工作中使用k8s。 终于在23年的6月仲…...

chromium通信系统-mojo系统(一)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节&#xff0c;实现解耦&#xff0c;也方便于传输&#xff0c;ipcz系统使用handle表示一个对象&#xff0c;hand…...

电路 buck-boost相关知识

BUCK-BOOST 文章目录 BUCK-BOOST前言一、DC-DC工作模式电容电感特性伏秒积平衡原理 二、BUCK电路三、BOOST电路四、BUCK-BOOST电路总结 前言 最近需要用到buck-boost相关的电路知识&#xff0c;于是便写下这篇文章复习一下。 一、DC-DC 在学习buck-boost电路之前我们先来看一…...

音频——S/PDIF

文章目录 BMC 编码字帧(sub-frame)格式帧(frame)格式参考S/PDIF 是 SONY 和 Philips 公司共同规定的数字信号传输规范,其实就是在 AES/EBU 上进行改动的家用版本。IEC60958 的标准规范囊括了以上两个规范。spdif 采用了双相符号编码(BMC),是将时钟信号和数据信号混合在一起…...

100篇带你入门——嵌入式系统中的程序调试方法

好久不见&#xff0c;最近小猿有点忙&#xff0c;才有时间给大家写文章。今天给大家讲一下在我们单片机开发都用哪些调试工具和调试方法&#xff0c;内容不完善的话&#xff0c;欢迎大家一起交流。 当涉及到嵌入式系统的程序调试时&#xff0c;选择正确的工具和方法是确保系统功…...

【Spring】Spring事务失效问题

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…...

WiFi 发射链路 MCS 自适应机制介绍

链路适配是指发射机选择最优的MCS向特定的接收机发送数据的过程。链路自适应算法的实现有其特殊性&#xff0c;但通常基于测量的数据包错误率(PER)。大多数算法监视PER并调整MCS以跟踪一个最佳的长期平均值&#xff0c;以平衡由于使用更高MCS发送更短数据包而减少的开销和由于更…...

【Linux常用命令】-文件写入相关

一、rm命令&#xff0c;文件删除 1.相关参数 -f&#xff08;–force&#xff09;&#xff1a;强制删除文件或目录&#xff0c;无需确认。 -r&#xff08;–recursive&#xff09;&#xff1a;递归地删除目录及其内容。 -i&#xff08;–interactive&#xff09;&#xff1a;交…...

枚举的第一行

2023年11月26日 问题: 好奇enum的所声明的枚举类的第一行是什么 从java技术卷1中第五章5.6中,了解是枚举类的实例 验证 错误信息: 解释: 此时只有有参构造 在这个枚举类里不能使用空,大概意思是说不能使用空参创建实例 校验 在原有的基础上创建一个无参构造 结果:不再报错,第…...

ANIMATEDIFF PRO惊艳效果:16帧内头发飘动轨迹、衣料褶皱物理模拟动态呈现

ANIMATEDIFF PRO惊艳效果&#xff1a;16帧内头发飘动轨迹、衣料褶皱物理模拟动态呈现 1. 引言&#xff1a;电影级AI渲染新标杆 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能生成一段16帧的高清动态视频——画面中人物的头发随风飘动&#xff0c;衣料褶皱随…...

结合JavaScript前端实现实时文本相似度对比工具

结合JavaScript前端实现实时文本相似度对比工具 1. 引言 你有没有遇到过这样的场景&#xff1f;写文章时&#xff0c;总感觉某两段话意思差不多&#xff0c;但又说不清到底有多像&#xff1b;翻译一段文字后&#xff0c;想对比一下自己的版本和参考译文&#xff0c;看看意思有…...

三菱FX3U PLC与变频器Modbus RTU通讯控制案例:实现启停、频率设定与读取功能...

三菱FX3U与三菱变频器 modbus RTU通讯案例 器件&#xff1a;三菱FX3U PLCFX3U 485BD&#xff0c;三菱E740变频器&#xff0c;昆仑通态触摸屏&#xff0c;威纶通 功能&#xff1a;采用485方式&#xff0c;modbus RTU协议。 与变频器通讯&#xff0c;控制启停&#xff0c;频率&am…...

Unity小白也能搞定的原神桌宠:从PMX模型到可拖拽交互的完整实现(附避坑点)

Unity小白也能搞定的原神桌宠&#xff1a;从PMX模型到可拖拽交互的完整实现&#xff08;附避坑点&#xff09; 1. 准备工作与环境搭建 作为一个Unity初学者&#xff0c;想要制作一个原神风格的桌宠&#xff0c;首先需要准备好必要的工具和环境。这个过程可能会让新手感到有些迷…...

LM1875功放DIY避坑指南:从看懂官方电路图到解决自激发热(附元件选择心得)

LM1875功放DIY实战手册&#xff1a;从电路设计到疑难排解全攻略 每次打开音响&#xff0c;那种温暖而有力的声音总能瞬间填满整个房间。作为DIY爱好者&#xff0c;亲手打造一台属于自己的功放不仅是技术的挑战&#xff0c;更是一种独特的成就感。LM1875这颗经典的音频功放芯片&…...

SGP40气体传感器驱动与VOC指数测量实战指南

1. 项目概述Sensirion SGP40 是一款专为室内空气质量&#xff08;IAQ&#xff09;监测设计的数字式气体传感器&#xff0c;采用金属氧化物&#xff08;MOx&#xff09;传感技术&#xff0c;通过测量挥发性有机化合物&#xff08;VOC&#xff09;引起的电导率变化&#xff0c;间…...

算法面试常见题型分类

算法面试常见题型分类指南 在技术面试中&#xff0c;算法能力是考察候选人逻辑思维和问题解决能力的重要环节。无论是校招还是社招&#xff0c;算法题往往是筛选候选人的关键门槛。掌握常见的题型分类&#xff0c;能够帮助面试者高效准备&#xff0c;提升解题能力。本文将介绍…...

FineReport实战:条件属性与参数控件的动态交互设计

1. 条件属性的核心玩法与实战案例 条件属性是FineReport中最实用的功能之一&#xff0c;它能让静态报表"活"起来。简单来说&#xff0c;就是根据数据值或业务规则&#xff0c;动态改变单元格的显示样式或内容。我在给某零售企业做数据分析系统时&#xff0c;就用这个…...

MATLAB GUI:打造你的专属图像美化工具箱

1. MATLAB GUI图像处理工具箱入门指南 第一次接触MATLAB GUI开发时&#xff0c;我也曾被那些专业术语吓到。但后来发现&#xff0c;用MATLAB做个图像处理工具箱其实比想象中简单得多。就像搭积木一样&#xff0c;把各种功能模块组合起来&#xff0c;就能做出一个实用的图像美化…...

OpenRouter 之后,中国企业需要怎样的 AI API 平台

随着 AI 应用的井喷&#xff0c;API 服务已成为企业降本增效、快速构建AI产品的“水电煤”。随之爆火的&#xff0c;还有 API 聚合平台——它将全球各大厂商、不同架构的 AI 模型统一集成到一个平台中。开发者和企业无需繁琐地逐一对接&#xff0c;就能轻松实现一站式调用与多模…...