React 生态应用 - React Router(2)

news2024/11/19 5:34:54

目录

RouteProps

Route参数

重定向Redirect【v5】&& 【v6实现】

导航的处理

练习

使用随堂demo实现一个简单的鉴权:当前用户是admin的时候,可以访问所有菜单;当前用户是user的时候,无法访问admin页面(用户可以模拟后端在页面输入)。


RouteProps

//v5版本语法 
<Switch>
  <Route path='/products' render={(props)=><Products {...props} groupId="99" />} />            
</Switch>

Route参数

// v5语法传参,加上?代表可选参数
<Route path="/products/:id?" component={ProductDetails}>

v5语法传参接收

render() {
    return (
        <div>
        	<h1>Product - {this.props.match.params.id}</h1>
        </div>    
    )
}

v6.0.1语法传参接收

import React from 'react';
import { useParams } from 'react-router-dom';
// useParams 必须在React函数组件或自定义React Hooks函数中调用React Hooks
const Posts = () => {
  const params = useParams();
  return (
    <div>
      <h1>Posts</h1>
      Year: {params.year}, Month:{params.month}
    </div>
  );
};
export default Posts;

推荐使用query-string 解析路径参数url?s=1&d=2

npm install query-string --save
improt queryString from 'query-string'
const parsed = queryString.parse(location.search)

重定向Redirect【v5】&& 【v6实现】

// v5 写法
<Route path='/not-found' component={NotFound} />
<Redirect to='/not-found' />
<Redirect from="/mall" to='/products' />
// v6写法
<Route path='/not-found' element={<NotFound />} />
<Route path='*' element={<Navigate to='/not-found' />} />
<Route path='/mall' element={<Navigate to='/products' />} />

导航的处理

// v5
history.push('/products')
history.replace('/products')
// v6
import { useNavigate } from 'react-router-dom';
const navigate = useNavigate();
function handleSave() {
    // Navigate to /products
    navigate('/products');
    navigate('/products',{replace:true});
}

 

练习

使用随堂demo实现一个简单的鉴权:当前用户是admin的时候,可以访问所有菜单;当前用户是user的时候,无法访问admin页面(用户可以模拟后端在页面输入)。

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

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

相关文章

LVS负载均衡集群和NAT模式群集部署

目录 1、什么是集群 2、集群的使用场景 3、集群的分类 4、负载均衡器的集群架构 5、负载均衡器的集群的工作模式 6、 LVS虚拟服务器 7、LVS的负载均衡算法 8、LVS集群创建与管理 9、LVS的管理工具 10、实验&#xff1a; nat模式 LVS负载均衡群集部署 1、什么是集群 将…

使用 pyodbc 解析chrome浏览器导出的书签并保存到 Microsoft Access 数据库

使用 wxPython 和 pyodbc 解析书签并保存到 Microsoft Access 数据库的示例博客&#xff1a; 本篇博客介绍了如何使用 wxPython 和 pyodbc 库创建一个简单的应用程序&#xff0c;用于解析 HTML 文件中的书签并将其保存到 Microsoft Access 数据库中。通过这个示例&#xff0c;您…

手把手教你使用人工智能生成游戏 3D 素材

引言 生成式 AI 已成为游戏开发中艺术工作流的重要组成部分。然而&#xff0c;正如我在之前的文章: 《AI 制作 3D 素材&#xff5c;基于 AI 5 天创建一个农场游戏&#xff0c;第 3 天》中描述的&#xff0c;从文本到 3D 的实用性仍落后于 2D。不过&#xff0c;这种情况正在改变…

集成大淘客实现多个电商平台的数据互连

大淘客是一家导购优惠平台。 它通过整合多个电商平台的商品和优惠信息&#xff0c;为用户提供高品质、低价格的商品推荐和购物指南。 场景描述&#xff1a; 基于大淘客开放平台的API能力&#xff0c;零代码实现多个电商平台的导购数据、商品数据、账号销售数据和其它应用数据…

51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真+程序+报告+讲解视频)

目录 51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真程序报告讲解视频&#xff09;1.主要功能&#xff1a;2.仿真3. 程序代码4. 设计资料内容清单&下载地址 51单片机简易数字万用表(电阻电流电压测量)仿真设计( proteus仿真程序报告讲解视频&#xff09; …

KeilMDK V5编译器的安装

1、安装原因 目前keil官网最新版本的Keil都是默认安装V6编译器&#xff0c;不再自动安装V5编译器&#xff0c;而V5与V6编译器在编译的时候有很多代码不兼容&#xff0c;导致工程编译失败&#xff0c;所以我们使用新版keil5的时候&#xff0c;要用V5编译器就要自己安装V5编译器。…

微信小程序自定义tabBar详细教程,且自适应尺寸和实现高斯模糊版

IOS示例&#xff1a; 安卓示例&#xff1a; 高斯模糊示例&#xff1a; WXML代码&#xff1a; <view class"tabbar"><view style"{{selectindex&&index0?color: #ef3166;:}}"class"tabbar-item {{ select index ? tabbar-select …

WMS系统条码管理

一、条码的基本概念和应用&#xff1a; WMS系统条码管理是指在仓库管理系统中使用条码技术对货物、物料和库存信息进行标识、跟踪和管理的过程。它基于条码识别和数据采集技术&#xff0c;通过在物料或货物上粘贴或打印条码标签&#xff0c;并使用条码扫描设备进行扫描和读取&…

深入理解内存 —— 函数栈帧的创建与销毁

前言 一位优秀的程序员&#xff0c;必须对内存的分布有深刻的理解&#xff0c;在初学编程的时候&#xff0c;往往有诸如以下很多问题困扰着初学者&#xff0c;而通过今天的分享&#xff0c;我们就可以通过自己的观察&#xff0c;将这些问题统统解决掉 局部变量是怎么创建的&…

架构师必备--高可用高性能分布式数据库Tidb安装部署实践

本文针对分布式、高可用的tidb数据库&#xff0c;从搭建实际生产环境的集群服务&#xff0c;介绍下tidb的安装流程、安装前的环境检测和系统优化、服务访问等方面介绍下具体的流程&#xff0c;希望对大家熟悉和了解tidb数据库有所帮助&#xff0c;减少不必要的弯路。 1.概述 …

图形推理|解题思路汇总

一、图形推理题常见题型 &#xff08;一&#xff09;图形的位置 图形的位置主要是指与图形位置相关的图形推理考点规律。 这类题目的图形特点通常有以下两类: (1)题干图形相似程度很高&#xff0c;只是某些部分的位置有差异-&#xff0c;考虑移动、旋转与翻转。…

自动编码器中的马尔可夫链蒙特卡罗期望最大化 (MCMC-EM):使用贝叶斯推理增强学习

一、介绍 自动编码器 自动编码器是强大的无监督学习算法&#xff0c;用于表示学习和降维。它们的工作原理是将输入数据编码为低维表示形式&#xff0c;然后将其解码回以重建原始数据。训练自动编码器通常涉及优化参数以最小化重建误差。然而&#xff0c;传统的优化技术&#xf…

如何通过MAT排查生产环境服务内存溢出

前言 前段时间&#xff0c;运维反馈生产环境翻译服务某个节点触发内存告警了。运维在重启节点之前&#xff0c;生成了dump快照&#xff0c;这里介绍下如何使用MAT内存分析工具来排查服务内存高占用问题。 MAT简介 MAT是Memory Analyzer的简称&#xff0c;它是一款功能强大的…

前端技术Vue学习笔记--005

Vue学习笔记 一、非父子通信-event bus 事件总线 作用&#xff1a;非父子组件之间&#xff0c;进行简易消息传递。&#xff08;复杂场景用----Vuex&#xff09; 使用步骤&#xff1a; 创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09;-----utils/EventBus.js /…

浅谈更糟糕的 CS_CLASSDC 标志位的作用

在上一篇文章中&#xff0c;我们了解了 CS_OWNDC 标志位的历史&#xff0c;也说明了设计它的初衷。 这个标志位一开始看起来是个挺好的设计&#xff0c;但是如果你多琢磨一会儿&#xff0c;就会发现它不是一个好主意。今天我们来看看更糟的。 CS_CLASSDC 标志位有点类似 CS_OW…

shell脚本文本三剑客sed

shell脚本文本三剑客sed 一.Sed编辑器1.1sed概述1.2sed工作流程1.3sed基本法1.4sed常用选项1.5sed命令的常用操作 二.sed命令使用2.1打印内容2.2删除内容示例5&#xff1a;先备份内容在删除2.3插入内容2.4取反2.5搜索替代2.6分组调用 一.Sed编辑器 1.1sed概述 sed编辑器是一种…

Linux 虚拟机Ubuntu22.04版本通过远程连接连接不上,输入ifconfig只能看到127.0.0.1的解决办法

之前给虚拟机配置静态IP之后&#xff0c;可以直接通过主机Vscode远程连接。但是前一段时间把主机的TCP/IPV4静态IP设置了一下之后&#xff0c;再连接虚拟机就连不上了&#xff0c;于是参考解决虚拟机不能上网ifconfig只显示127.0.0.1的问题&#xff0c;又可以连接上了&#xff…

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

SpringBoot复习:(56)使用@Transactional注解标记的方法的执行流程

首先&#xff0c;如果在某个类或某个方法被标记为Transactional时&#xff0c;Spring boot底层会在创建这个bean时生成代理对象&#xff08;默认使用cglib) 示例&#xff1a; 当调用studentService的addStudent方法时&#xff0c;会直接跳到CglibAopProxy类去执行intercept方…

vscode里配置C#环境并运行.cs文件

vscode是一款跨平台、轻量级、开源的IDE, 支持C、C、Java、C#、R、Python、Go、Nodejs等多种语言的开发和调试。下面介绍在vscode里配置C#环境。这里以配置.Net SDK v5.0&#xff0c;语言版本为C#9.0&#xff0c;对应的开发平台为VS2019&#xff0c;作为案例说明。 1、下载vsc…