react-route的路由

news2024/12/23 3:11:29

React-Router是一个基于React的强大路由库,它可以帮助我们在React应用中实现页面之间的跳转和路由管理。本文将详细介绍React-Router的路由功能、常用功能模块、路由传参和路由嵌套,并提供相关代码和解释。

路由功能

React-Router通过管理URL和组件的映射关系,可以帮助我们实现以下路由功能:

  • 路由跳转:通过URL的改变,实现页面之间的跳转。
  • 嵌套路由:将多个组件按照层次结构嵌套在一起,形成复杂的页面结构。
  • 路由传参:将参数传递给组件,实现动态的页面展示。
  • 路由守卫:在路由跳转前,进行权限验证或其他操作,控制页面的访问权限。
  • 动态路由:根据URL的不同,动态地加载不同的组件。

常用功能模块

React-Router提供了多种功能模块,可以帮助我们实现路由管理。以下是常用的功能模块:

BrowserRouter

BrowserRouter是React-Router的核心组件之一,它使用HTML5的history API来实现路由跳转。在应用中只需要使用一个BrowserRouter组件即可。

import { BrowserRouter } from 'react-router-dom';

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);

Route

Route组件是React-Router中最重要的组件之一,它用于将URL和组件进行映射。可以使用exact属性来指定精确匹配,使用path属性来指定URL路径,使用component属性来指定对应的组件。

import { Route } from 'react-router-dom';

<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />

Link

Link组件用于在应用中实现路由跳转,它可以生成一个可点击的链接,点击后会跳转到指定的URL路径。

import { Link } from 'react-router-dom';

<Link to="/">Home</Link>
<Link to="/about">About</Link>
<Link to="/contact">Contact</Link>

Switch

Switch组件用于在多个Route组件中选择一个匹配的组件进行渲染。它会遍历所有的Route组件,找到第一个匹配的组件进行渲染。

import { Switch, Route } from 'react-router-dom';

<Switch>
  <Route exact path="/" component={Home} />
  <Route path="/about" component={About} />
  <Route path="/contact" component={Contact} />
</Switch>

路由传参

React-Router可以通过URL参数的方式,将参数传递给组件。可以使用props.match.params来获取URL参数。

import { Route } from 'react-router-dom';

<Route path="/user/:id" component={User} />

class User extends React.Component {
  render() {
    const { id } = this.props.match.params;
    return <div>User ID: {id}</div>;
  }
}
<NavLink to="/home/router?like='结衣'&say=121212">路由组件的传参</NavLink>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//跳转
 <NavLink to="/home/router/555/久久喝酒?like='结衣'&say=121212">路由组件的传参</NavLink>
//显示
 <Route path={'/home/router/:id/:app'}    component={Routeobj}></Route>

在这里插入图片描述

<NavLink to={{pathname:"/home/router",search:"?like='结衣'&say=121212"}}>路由组件的传参</NavLink>
<NavLink to={{pathname:"/home/router",state:{name:'影子'}}} >路由组件的传参</NavLink>

路由嵌套

React-Router可以将多个组件按照层次结构嵌套在一起,形成复杂的页面结构。在父组件中使用Route组件来定义子组件的路由。

import { Route } from 'react-router-dom';

<Route path="/about" component={About}>
  <Route path="/about/history" component={History} />
  <Route path="/about/team" component={Team} />
  <Route path="/about/contact" component={Contact} />
</Route>

以上就是React-Router的路由功能、常用功能模块、路由传参和路由嵌套的详细介绍。希望本文能够帮助您更好地了解React-Router,并在实际开发中使用它来实现路由管理。

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

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

相关文章

Vue3 ~

变动 实例 const app new Vue({}) Vue.use() Vue.mixin() Vue.component() Vue.directive()const app Vue.createApp({}) app.use() app.mixin() app.component() app.directive()createApp 代替 new Vue 允许多个根标签 createStore 代替 Vue.use(Vuex) createRouter 代替…

保障网络安全:IP代理识别API的作用与应用

引言 随着互联网的不断发展&#xff0c;网络安全问题已经变得愈发重要。在网络上&#xff0c;恶意用户可以利用IP代理隐藏其真实身份&#xff0c;从而发动各种网络攻击或欺诈行为。为了保障网络安全&#xff0c;IP代理识别API成为了一种不可或缺的工具&#xff0c;本文将深入探…

计算机竞赛 深度学习 opencv python 公式识别(图像识别 机器视觉)

文章目录 0 前言1 课题说明2 效果展示3 具体实现4 关键代码实现5 算法综合效果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的数学公式识别算法实现 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学…

Apollo配置更新通知

文章目录 启用方式hook编写服务部署本地部署容器化部署构建镜像 使用 ⚡️: 应领导要求想要把 Apollo 配置变更信息更新到企业微信群中&#xff0c;线上出现异常可根据变更时间&#xff0c;快速反应是否是配置变更导致异常 启用方式 &#x1f31b;: 前提有一个可正常使用的Apo…

微服务保护-Sentinel

初识Sentinel 雪崩问题及解决方案 雪崩问题 微服务中&#xff0c;服务间调用关系错综复杂&#xff0c;一个微服务往往依赖于多个其它微服务。 如图&#xff0c;如果服务提供者I发生了故障&#xff0c;当前的应用的部分业务因为依赖于服务I&#xff0c;因此也会被阻塞。此时&a…

深度学习pytorch之tensorboard和transform的使用

这样操作是引入tensorboard&#xff0c;申明一个类&#xff0c;logs是生成日志的文件夹&#xff0c;事件就在这里产生。 writer为申明的实例&#xff0c;这里做的画线操作 第一个是tags是图片的标签&#xff0c;第二个参数是y值&#xff0c;第三个是步长&#xff0c;x值 关闭…

Kotlin simple convert ArrayList CopyOnWriteArrayList MutableList

Kotlin simple convert ArrayList CopyOnWriteArrayList MutableList Kotlin读写分离CopyOnWriteArrayList_zhangphil的博客-CSDN博客Java并发多线程环境中&#xff0c;造成死锁的最简单的场景是&#xff1a;多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2&#xff0c;而多…

TDengine 与煤矿智能 AI 视频管理系统实现兼容性互认

煤矿行业是一个充满危险和复杂性的领域&#xff0c;具备产业规模大、分布地域广、安全性要求高等特点&#xff0c;为了实现智能化预警、预测等目的&#xff0c;煤矿企业纷纷采用现代化的技术来提高安全性、生产效率和管理水平。煤矿智能 AI 视频管理系统可以助力企业更好地进行…

JMeter:断言之响应断言

一、断言的定义 断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。 对于接口测试来说&#xff0c;就是测试Request/Response&#xff0c;断言即可以针对Request进行&#xff0c;也可以针对Response进行。但大部分是对Respons…

基于SSM的博客系统开发

文章目录 前言1.技术选型&#xff1a;2.主要功能&#xff1a;3.项目展示&#xff1a;前台页面&#xff1a;后台页面&#xff1a; 总结 前言 提示&#xff1a;人类与强权的斗争&#xff0c;就是记忆与遗忘的斗争。 --米兰昆德拉《笑忘录》 1.技术选型&#xff1a; 开发工具&am…

android 存储新特性

分区存储 本页内容应用访问限制将分区存储与 FUSE 搭配使用 FUSE 和 SDCardFSFUSE 性能微调减轻与 FUSE 相关的性能影响隐私优势远超性能劣势MediaProvider 和 FUSE 更新 分区存储会限制应用访问外部存储空间。在 Android 11 或更高版本中&#xff0c;以 API 30 或更高版本为…

Linux Day16 多线程的一些常见问题

目录 一、多线程fork() 问题一&#xff1a;多线程中某个线程调用 fork()&#xff0c;子进程会有和父进程相同数量的线程吗&#xff1f; 1.1.1 不使用fork前&#xff0c;让线程函数和主程序打印其进程号 结果&#xff1a; 结论&#xff1a; 1.1.2 在主程序中加入fork 结果…

个人博客网站一揽子:Docker搭建图床(Lsky Pro)

Lsky Pro 介绍 Lsky Pro 是一个用于在线上传、管理图片的图床程序&#xff0c;中文名&#xff1a;兰空图床&#xff0c;你可以将它作为自己的云上相册&#xff0c;亦可以当作你的写作贴图库。 兰空图床始于 2017 年 10 月&#xff0c;最早的版本由 ThinkPHP 5 开发&#xff0…

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

JavaEE学习之--类和对象

&#x1f495;粗缯大布裹生涯&#xff0c;腹有诗书气自华&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;Java学习之--类和对象 类和对象 类的实例化&#xff1a; 1.什么叫做类的实例化 利用类创建一个具体的对象就叫做类的实例化&#xff01; 当我们创建了…

【消息中间件】详解mq消息积压

作者简介 目录 1.产生原因 2.解决办法 2.1.事前处理机制 2.2.事中处理机制 2.3.事后处理机制 1.产生原因 消息积压&#xff08;Message Backlog&#xff09;指的是在消息队列&#xff08;MQ&#xff09;系统中等待被处理的消息数量超过了正常的处理速度&#xff0c;导致消…

Nvm任意切换node版本号

前言&#xff1a; nvm&#xff08;Node Version Manager&#xff09;是一个用于管理Node.js版本的工具。它允许您在同一台计算机上同时安装和切换不同版本的Node.js。使用nvm&#xff0c;您可以轻松地在项目之间切换Node.js版本&#xff0c;而无需手动安装和卸载不同的版本。这…

FPGA纯verilog实现8路视频拼接显示,提供工程源码和技术支持

目录 1、前言版本更新说明免责声明 2、我已有的FPGA视频拼接叠加融合方案3、设计思路框架视频源选择OV5640摄像头配置及采集静态彩条视频拼接算法图像缓存视频输出 4、vivado工程详解5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 6、上板调试验证并演示…

【Java 基础篇】Java 标准输出流详解:输出你的程序之美

Java 编程中&#xff0c;标准输出流是一个重要的概念。它允许我们将程序的输出信息显示在终端或控制台上&#xff0c;这对于调试、用户界面和与用户的交互非常重要。在这篇文章中&#xff0c;我们将深入探讨 Java 的标准输出流&#xff0c;了解如何使用它以及一些常见的用法和技…

libevent数据结构——TAILQ_结构体

TAILQ_结构体 TAILQ_结构体在文件event2/event_struct.h和文件event2/keyvalq_struct.h中都有定义&#xff0c;并且他们的定义都是一样的&#xff0c;定义了TAILQ_ENTRY、TAILQ_HEAD结构体&#xff1a; #ifndef TAILQ_ENTRY #define EVENT_DEFINED_TQENTRY_ #define TAILQ_EN…