1、路由守卫(拦截)

react框架没有路由守卫功能,只能通过在路由里设置meta元字符实现路由拦截。路由拦截就是路由在发生变化时需要进行的拦截处理。

2、监听路由变化

方式:

1、路由下的内容组件通过history对象来进行监听

class Header extends Component {componentDidMount() {// 监听路由的变化,如果路由发生变化则进行相应操作this.props.history.listen(location => {// 最新路由的 location 对象,可以通过比较 pathname 是否相同来判断路由的变化情况if (this.props.location.pathname !== location.pathname) {// 路由发生了变化}})}
}

2、组件重新渲染前后(使用 componentWillReceiveProps 、 componentDidUpdate 、componentWillUpdate

class Header extends Component {componentWillReceiveProps (nextProps, nextState) {if (this.props.location.pathname !== nextProps.location.pathname){// 路由发生了变化}}
}

3、hooks方式监听

import React, { useEffect } from 'React';
const Header = function (props) {useEffect(() => {console.log(props.location);}, [props.location])
}
export default Header;

react组件创建方式分为类组件和函数组件(最佳)。

纯函数组件优点是比类组件更加轻便。

纯函数:返回结果只依赖于它的参数,而且没有任何可观察的副作用,函数与外界交流数据只通过参数和返回值)

纯函数组件也有以下不太好的地方:

1、纯函数组件没有状态

2、纯函数组件没有生命周期

3、纯函数组件没有this

4、只能是纯函数

为此React团队设计出了React Hooks(英文意思是“钩子”)。React默认有四种常用的钩子:

1、useState(): 状态钩子

用法与class的this.setState基本一致

  2、useContext():共享状态钩子

                        Context实现跨层级的组件数据传递,既不需要在组件树中通过逐层传递props或者

state方法来传递数据。

该钩子的作用,在组件之间共享状态,其作用就是可以做状态的分发,作用是避

免了react逐层通过Props传递参数

        3、useReducer():Action钩子

        4、useEffect():副作用钩子

       副作用:在React组件中执行比如修改外部作用域/全局变量、修改传入的参数、发送请求、console.log、手动修改DOM都属于副作用)

react路由守卫、路由监听等总结相关推荐

  1. window.open 打开vue路由,并监听页面关闭事件,监听子父页面消息传递

    name:路由 query:传递参数 const page2 = this.$router.resolve({name:'addHs',query:{hsCode:row.hsCode}}); var ...

  2. 查看 linux 硬件信息:内存、分区、系统、环境变量、防火墙、路由、端口监听、进程、CPU...

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.linux CPU大小: 其实应该通过Physical Processor ID来区分单核和双核 ...

  3. 路由守卫 /路由拦截

    1. 在访问一个页面的时候 也就是在进行路由跳转的时候,把这个跳转拦下来 做一些判断或者操作 然后来执行是继续访问这个页面还是执行别的操作 路由的导航守卫又叫 路由的生命周期函数 也叫 路由的钩子函数 ...

  4. SpringCloud集群的搭建,分布式的实现,负载均衡的几种方式,路由,页面监听

    SpringCloud 服务注册与发现--Netflix Eureka 负载均衡: 客户端负载均衡--Netflix Ribbon 服务端负载均衡:--Feign(其也是依赖于Ribbon,只是将调用 ...

  5. react路由配置,路由跳转与传值,路由监听

    1.react路由配置 1.1 下载react的路由模块 (默认最新6.3, 如需使用5.x, 在模块名后加@5) npm install react-router-dom --save // 6.0 ...

  6. angularjs -- 路由监听

    前几天,项目在做一个功能时需要在页面切换之前关闭正在执行的函数.尝试了几种方式都不行,最后想到既然angularjs是通过理由切换页面,那就在路由上面做文章吧.AngularJS在路由发生改变时,可以 ...

  7. vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex

    阅读目录 Vue如何封装Axios请求 1 安装axios 2 封装代码 axios 应用方式 Vue 中的路由守卫 使用演示 1 全局守卫 2 组件级守卫 3 单个路由独享的守卫 4 官网整个路由守 ...

  8. 路由的导航守卫过渡动效transtion导航守卫 路由懒加载 路由元信息 @stage3---wee2--day7

    # 路由的导航守卫 别名: 导航守卫 路由守卫 路由钩子 路由拦截 作用: - 类似 [保安] 守卫路由 进 举例: 携带数据进 出 举例: 事情完成才能出 导航守卫一共有三种形式 [ 项目三选一 ] ...

  9. angular学习总结-路由和路由守卫

    通过命令新建页面news: ng g page news 会在src/app目录下自动生成以下文件,并更新app-routing.module.ts总路由文件. 再来看看app-routing.mod ...

  10. vue2路由手动创建二级路由路由传参路由守卫打包上线

    路由手动配置: #在@vue/cli创建的项目中,路由用法如下. 1.安装路由npm install vue-router@32:定义路由所需的组件(.vue文件)要实现页面about 和home两个 ...

最新文章

  1. markdown语法中的空格_Markdown常用语法汇总
  2. Mac Eclipse上Android SDK manager闪退的问题!!
  3. 面试:5 亿整数的大文件,来排个序?
  4. camel 多个 to_具有多个查询参数的Camel CXF服务
  5. ssh自动输入密码登录服务器/ssh免输入密码登录/非交互ssh 密码验证
  6. 线程WAITING--BlockingQueueDemo
  7. AI是计算机科学,人工智能计算机科学(79种)...
  8. 微型计算机控制技术试卷B,微型计算机控制技术试卷b..doc
  9. [每日一题] 11gOCP 1z0-052 :2013-09-24 temporary tables.........................................C11...
  10. JPack发布0.5.0
  11. 计算机毕设(附源码)JAVA-SSM基于JAVA宠物店管理系统
  12. QAM识别算法matlab,16qam调制识别matlab
  13. oracle学习篇十二:索引
  14. cce是什么意思_CCE 是什么
  15. 某大型软件公司售前软件工程师面试题附答案
  16. 一分钟整明白web前端和Java后端的就业前景
  17. 算法工程师也有35岁危机吗?
  18. AT24C02数据存储
  19. ale插件 vim_Vim中异步语法检查ale配置
  20. Python多线程遍历爬取FTP文件(附可实现源码)

热门文章

  1. 【leetcode买卖股票系列问题】多次买卖/手续费/冻结期
  2. android如何查看当前app的版本号,《android 获取当前app的版本号和版本名称》
  3. Java--Map集合
  4. css line-height属性是什么
  5. 大数据如何改变世界?不尽数据滚滚来
  6. Line的IP孵化之路:QQ企鹅和Line之间隔着几个布朗熊?
  7. 尺寸各单位之间的相互转换
  8. mfc webbrowser判断网页加载完成
  9. 苹果系统新致命漏洞,黑客可以随意控制您的手机设备
  10. android wear5.1.1更新,Android Wear 5.1体验:苹果表遭遇劲敌