一起来看React(路由守卫)

2023-05-16

我们在很多时候都会接触到路由守卫--->无论是不是做(代码小子)的人

我们在浏览各网页时会看到头部的网址,如:

当我们在逛:淘宝/天猫/京东 这一类的网站时我们自定义输入地址时,我们应该先登录,如果没登录我们应该跳转到指定页面

路由守卫:

自定义界面的前置路由守卫,当用户点击要进入r组件时,路由守卫发起判断,如果条件满足则进入,否则跳转至pathname组件
复制代码

在实现路由守卫时:我们首先要安装

npm install react-router-dom --save-dev //这里可以使用cnpm代替
复制代码

定义私有开关isLogin为假,在PrivateRoute中使用 然后我们去页面触发

import React from 'react'; 
import {Redirect,Route} from 'react-router-dom';
const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route
        {...rest}
        render={props =>
            Boolean(sessionStorage.getItem("isLogin")) ?
            (
                <Component {...props} />
            )
             : (
                <Redirect
                    to={{
                        pathname: "/",
                        state: { from: props.location }
                    }}
                />
            )
        }
    />
);
export {
    PrivateRoute
}
复制代码

我们简单地做几个路由守卫----(路由跳转 one two three four 页并守卫)

我们在页面内

import One from "./one.js"
import Two from "./two.js"
import Three from "./three.js"
import Four from "./four.js"
复制代码

引入这四个页面,并且:

import {PrivateRoute} from "../router/PrivateRoute"
复制代码

引入我们之前书写的PrivateRoute,接下来我们书写我们的点击事件

<ul>
<li onClick={this.goto.bind(this,"/Main/one")}>第一个</li>
<li onClick={this.goto.bind(this,"/Main/two")}>第二个</li>
<li onClick={this.goto.bind(this,"/Main/three")}>第三个</li>
<li onClick={this.goto.bind(this,"/Main/four")}>第四个</li>
</ul>
复制代码

当我们点击我们的N个时都会触发我们的goto(跳转)函数

goto(i){
    sessionStorage.setItem("isLogin",true)
    this.props.history.push(i)
}
复制代码

goto为我们的函数,设置的Item内的IsLogin为true是代表我们可以进行跳转,如果Islogin==""的话我们将无法进行跳转。

---->isLogin主要是:路由守卫发起判断,如果条件满足则进入,否则跳转至pathname组件

当以上都满足时我们要用Swithch和内部的PrivateRoute进行操作

<Switch>
<PrivateRoute path="/Main/one" component={One} ></PrivateRoute>
<PrivateRoute path="/Main/two" component={Two} ></PrivateRoute>
<PrivateRoute path="/Main/three" component={Three} ></PrivateRoute>
<PrivateRoute path="/Main/four" component={Four} ></PrivateRoute>
<Route  path="/" component={One} />
</Switch>  
复制代码

Switch 是唯一的因为它仅仅只会渲染一个路径

转载于:https://juejin.im/post/5d005664f265da1bc64bba64

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一起来看React(路由守卫) 的相关文章

  • React Native 环境搭建, 新建项目, 运行和调试

    React Native 可以理解为一个基于 JavaScript 具备动态配置能力 面向前端开发者的移动端开发框架 目前为止虽然一直还没有V1 0 0版本 但是相信很多小伙伴都了解过或者已经入坑了 为什么RN那么有人气呢 我们可以先简单分
  • React Router 路由守卫

    React Router 路由守卫 组件内路由守卫 1 下面是使用高阶组件实现路由守卫的示例代码 import React from react import Route Redirect from react router dom con
  • 【React】路由(详解)

    目录 单页应用程序 SPA 路由 前端路由 后端路由 路由的基本使用 使用步骤 常用组件说明 BrowserRouter和HashRouter的区别 路由的执行过程 默认路由 精确匹配 Switch的使用 重定向路由 嵌套路由 向路由组件传
  • 配置使用Eslint的时候 版本错误 "eslint": "5.6.0" a different version of eslint was detected higher up in the tr

    1 如果你也遇到下面的问题 你可以 按照命令行提示的那样 下面这四步完成的一般就可以了 但是不排除你在运行的时候忘记下载某些依赖 1 删除 package lock json 不是package json 你可以选择 yarn lock 或
  • react基础--组件通讯:props基础、子传父、父传子、兄弟组件通讯、context跨级组件、props进阶

    目录 一 props基础 1 1 概述 1 2 函数组件通讯 1 2 1 基本用法 1 2 1 对象数据传递 1 3 类组件通讯 1 4 props的特点 二 组件通讯三种方式 2 1 父传子 2 2 子传父 2 3 兄弟组件通讯 三 co
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • Ant Design Pro 从零到一教程

    说在最前面的话 可是能全网唯一适合小白的antd教程 因为我找了接近一个周的教程 无论是视频 博客等等都没有比较完整的教程 所以才说这可能是唯一全网适合小白教程 文章末有相关学习链接 适用人群 喜欢看文字或者代码学习的人 学习的人掌握基本的
  • React的超详细讲解

    React React的重点 webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency
  • react和react jsx基础

    本文是个人学习笔记 例子都是来自React Native官网 之前不是做前端的 没有使用过react 要学习react native做混合开发 react 包括react jsx还是得补补 react和react jsx react是一个j
  • React解密:React Hooks函数之useCallback和useMemo

    之所以将useCallback和useMemo放到一起 从某种意义上说 他们都是性能优化的始作俑者 他们也有很多的共性 我们先来回顾一下class组件性能优化的点 调用 setState 就会触发组件的重新渲染 无论前后 state 是否相
  • react 上传文件(多选)功能入的坑

    1 这里报错是因为onChange的this指向不对 解决方法在constructor中写 this onChange this onChange bind this 或者在绑定事件的时候写 onChange this onChange b
  • React核心概念:状态提升

    上一节 表单 下一节 组合vs继承 React核心概念 状态提升 引言 添加第二个输入框 编写转换函数 状态提升 经验总结 引言 很多情况下我们使用的多个组件需要对同一个数据做出对应的反应 在这里我们推荐把这个共享的状态提升到距离这些组件最
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • React 定时刷新接口

    通过 useEffect 在页面加载时调用 getNodeDetailList 列表接口 useEffect gt getNodeDetailList change 然后通过 setInterval 来进行定时刷新 useEffect gt
  • 值得收藏的UmiJS 教程

    点击上方关注 前端技术江湖 一起学习 天天进步 前言 网上的umi教程是真的少 很多人都只写了一点点 很多水文 所以打算自己写一篇 自己搭建umi 并封装了一下常用的功能 并用到公司实际项目中 umi介绍 Umi 是什么 Umi 中文可发音
  • 如何替换对象的key值

    发生的场景 现在用antd组件库 有些组件想渲染数据的话 我要根据他们官网给的字段名称对应起来才能渲染上去 这个是复选框选中 保存的时候 字段需要按照后台约定的传入code value 1 常规循环遍历 大招来了 哈哈哈 才疏学浅 我觉得是
  • React事件处理及事件流

    React事件处理 React事件处理是通过将事件处理器绑定到组建上处理事件 事件触发的同时更新组建的内部状态 内部状态更新会触发组件的重绘 React 元素的事件处理和 DOM 元素的事件处理很相似 但语法上的略有区别 在React中事件
  • reactJS 干货(reactjs 史上最详细的解析干货)

    一 State和 Props state是状态机 应该包括 那些可能被组件的事件处理器改变并触发用户界面更新的数据 譬如需要对用户输入 服务器请求或者时间变化等作出响应 不应该包括 计算所得数据 React组件 在render 里使用pro
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化
  • React安装依赖 node_modules中有下载依赖项但package.json文件中没有依赖

    React安装依赖 node modules中有下载依赖项但package json文件中没有依赖 直接在下载依赖项后 加 S 就可以解决 随机 id 生成器 uuid nanoid npm install nanoid S S save

随机推荐

  • 异常-----freemarker.core.ParseException: Unexpected end of file reached

    freemarker自定义标签 假如你现在还在为自己的技术担忧 xff0c 假如你现在想提升自己的工资 xff0c 假如你想在职场上获得更多的话语权 xff0c 假如你想顺利的度过35岁这个魔咒 xff0c 假如你想体验BAT的工作环境 x
  • 40岁程序员真的要被淘汰了么?

    我承认起这个标题有些标题党 这几天华为公司被热议 xff0c 据非正式小道消息 华为开始 清理 34岁以上员工 据威腾网消息 xff08 http digi 163 com 17 0216 15 CDDINLRL0016686Q html
  • 探讨下为什么设置了Cache-Control:no-cache 服务器还是返回304 Not Modified ?

    前言 今天做项目的时候遇到一个问题 xff0c 就是在ie11中 新增一条新的消息后页面刷新后 xff0c 并没有看到新增的消息 xff0c 于是打开控制台发现 304 Not Modified 加时间戳没用 于是赶紧联系后台大佬能不能把c
  • maven 全局排除jar包

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 大多数java应用源码构建和依赖管理是使用maven来实现的 xff0c 我们的应用系统也都是基于maven构建的 xff0c maven虽然在依赖管理方面确实很便捷 xf
  • Engine实现国密算法SM3的代码和逻辑图

    OpenSSL add all algorithms ERR load crypto strings ENGINE load dynamic ENGINE init Engine finish free ENGINE by id ENGIN
  • 安装VMware,出现没有虚拟网络适配器的问题

    遇到错误 xff1a 安装VMware Workstation Pro这个软件 xff0c 网络适配器中没有虚拟网卡 xff0c 导致无法上网 解决方法 xff1a 遇到这个问题 xff0c 我就第一时间就去网上搜索解决方法 xff0c 方
  • RabbitMQ和Kafka面试

    RabbitMQ xff1a 采用AMQP高级消息队列协议的一种消息队列技术 最大的特点就是消费并不需要确保提供方存在 实现了服务之间的高度解耦 当master queue 所在节点宕机后 xff0c 其正在被消费的消息的相关信息全部丢失
  • windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境

    windows下用eclipse 43 goclipse插件 43 gdb搭建go语言开发调试环境 http rongmayisheng com post windows E4 B8 8B E7 94 A8eclipsegoclipse E
  • Linux性能监测:磁盘IO篇

    Linux性能监测 xff1a 磁盘IO篇 计算机最慢的子系统 xff0c 也是最容易出现性能瓶颈的地方 xff0c 因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作 xff0c 比如转轴 寻轨等 访问硬盘和访问内存之间的
  • 多媒体指令(图像灰度化)

    权当练手了 xff0c 效果不好 xff0c cpu没有提供pmulluw这样一个无符号字相乘指令 处理的效果和matlab明显不同 xff0c 尤其是背景 xff0c 我实在找不出问题在哪里 xff0c 最可能就在寄存器符号上 灰度公式是
  • jni 中的 extern "C" 分析

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 先看一段jni自动生成的源代码 code DO NOT EDIT THIS FILE it is machine generated include lt jni h gt
  • Engine实现国密算法SM4 ECB/CBC 模式的代码和逻辑图

    相应的 struct EVP sms4 cbc Encrypt Decrypt SKF SMS4实现 查看源文件 xff0c 暂不提供 执行测试
  • Java中的箭头——Lambda表达式

    转自 xff1a Java 8 Lambda 表达式 菜鸟教程 Lambda 表达式 xff0c 也可称为闭包 xff0c 它是推动 Java 8 发布的最重要新特性 Lambda 允许把函数作为一个方法的参数 xff08 函数作为参数传递
  • Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

    如果要在Linux上做j2ee开发 xff0c 首先得搭建好j2ee的开发环境 xff0c 包括了jdk tomcat eclipse的安装 这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS 七 CentOS下j2ee环境
  • selenium.common.exceptions.WebDriverException: Message: "Can't load the profile.

    记录一下 xff0c Selenium在最新版本中修好了这个问题 运行CMD xff0c 然后输入 pip install U selenium
  • 网页跳转(APP内/浏览器)

    APP内网页跳转 xff1a xml lt WebView android layout below 61 span class hljs string 34 64 id lunbo 34 span android layout width
  • Intellij IDEA Resource Bundle

    Resource Bundle是什么 可以直接通过官方的描述来了解 https www jetbrains com hel Resource bundle is a set of properties files that have sam
  • H3C配置日志主机

    华三网络设备信息级别共有8级 xff0c 从高到底分别为emergencies alerts critical errors warnings notifications infomational debugging 信息级别数值描述eme
  • MIUI11系统怎么样刷入开发版获得Root超级权限

    小米的手机或平板不同手机型号一般情况下官网都提供两个不同的安卓系统版本 xff0c 可分为稳定版和开发版 xff0c 稳定版没有提供root权限管理 xff0c 开发版中就开启了root权限 xff0c 很多时候我们需要使用的一些功能强大的
  • 一起来看React(路由守卫)

    我们在很多时候都会接触到路由守卫 gt 无论是不是做 代码小子 的人 我们在浏览各网页时会看到头部的网址 如 xff1a 当我们在逛 xff1a 淘宝 天猫 京东 这一类的网站时我们自定义输入地址时 我们应该先登录 如果没登录我们应该跳转到