vue-router的导航守卫实际和组件的生命周期都是同一类型的钩子函数,在一个特定时间内会触发。

导航守卫有三个类型,分别是全局的钩子(针对整个路由器实例),单个路由对象的钩子和组件内的钩子。

全局导航钩子

const router = new VueRouter({routes
})//全局前置守卫
router.beforeEach((to, from, next) => {console.log('beforeEach')next()
})// 全局解析守卫
router.beforeResolve((to, from, next) => {console.log('beforeResolve')next()
})// 全局后置钩子
router.afterEach((to, from) => {console.log('afterEach')
})

路由独享守卫

const routes = [{path: '/',name: 'Home',component: Home,// 路由独享守卫beforeEnter: (to, from, next) => {console.log('Home-beforeEnter')next()}},{path: '/about',name: 'About',component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),// 路由独享守卫beforeEnter: (to, from, next) => {console.log('About-beforeEnter')next()}}
]

组件内的守卫

  beforeRouteEnter(to, from, next) {// 在渲染该组件的对应路由被 confirm 前调用// 不!能!获取组件实例 `this`// 因为当守卫执行前,组件实例还没被创建},beforeRouteUpdate(to, from, next) {// 在当前路由改变,但是该组件被复用时调用// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。// 可以访问组件实例 `this`},beforeRouteLeave(to, from, next) {// 导航离开该组件的对应路由时调用// 可以访问组件实例 `this`}

一个实际项目中,如果涉及有导航切换,则钩子函数和生命周期的执行顺序应该是有两种情况:

Home 和 About 分别代表2个组件名

1)打开页面的任意一个页面,没有发生导航切换

beforeEach-->beforeEnter-->beforeRouteEnter-->beforeResolve-->afterEach-->beforeCreate-->created-->beforeMount-->mounted

2)导航切换(从一个路由切换到另外一个路由),比如:路由 home 到路由 about

beforeRouteLeave-->beforeEach-->beforeEnter-->beforeRouteEnter-->beforeResolve-->afterEach-->beforeCreate-->created-->beforeMount-->beforeDestroy-->destroyed-->mounted

动态路由切换会触发 beforeRouteUpdate,比如:about/1-->about/2。

红线分割代表路由变化前后触发的所有钩子

vue-router导航钩子执行顺序相关推荐

  1. vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用

    vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用 异步解决方案:async/await 多个await,同步拿到数据再处理 多个接口处理拿到数 ...

  2. VUE router 导航重复点击报错的问题解决两种方案

    VUE router 导航重复点击报错的问题解决两种方案 前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的.包括语音识别.机器翻译等从基础到实战都有,很详细,分享给大家 ...

  3. vue 子父组件周期顺序_父组件和子组件生命周期钩子执行顺序是什么?

    加载页面执行步骤 1.父组件:beforeCreate -> created -> beforeMount 2.子组件:beforeCreate -> created -> b ...

  4. vue 父子组件mounted执行顺序

    先看一下父子组件的 mounted created 等一些钩子函数的先后顺序 1 父组件:beforeCreate 2 父组件:created 3 父组件:beforeMount 4 子组件:befo ...

  5. vue router name命名规范_vue-router使用

    vue-router基本用法 vue-router的实现原理: 路由不同的页面也就是加载不同的组件. 路由的三个基本概念: router:它是一条路由,test按钮 => test内容,这是一条 ...

  6. Vue Router路由模式的区别 进程线程的区别

    Vue Router hash模式和history模式的区别 hash模式url里面永远带着#号,我们在开发当中默认就是hash模式. 那么什么时候需要用到history模式呢? 肯定是用户觉得#号太 ...

  7. Vue组件生命周期钩子和Vue-Router路由钩子的执行顺序

    Vue组件生命周期钩子的执行顺序如下图所示 链接:https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6% ...

  8. vue进入页面执行的钩子函数_vue router的钩子函数总结

    模块一:全局导航钩子函数 1.vue router.beforeEach(全局前置守卫) beforeEach的钩子函数,它是一个全局的before 钩子函数, (before each)意思是在 每 ...

  9. vue中父子组件先后渲染_vue父子组件钩子函数的执行顺序

    加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...

最新文章

  1. 全网最全的Postman接口自动化测试(小鸟成大鸟级攻略)
  2. 64位Win10安装Pytorch
  3. win7php网页显示空白,win7系统ie11打开网页显示空白的解决方法
  4. R语言观察日志(part14)--R语言杂记
  5. Hazelcast入门指南第3部分
  6. php类代码中常看到::的操作符
  7. 苹果造车消息带动激光雷达股上涨 新能源整车概念下跌
  8. 拓端tecdat|R语言相关分析和稳健线性回归分析
  9. python property 与get/set方法详解
  10. ECharts - dataset组件的用法详解
  11. linux下双机热备份系统,基于Linux的双机热备份系统的研究与设计
  12. pandas读取文件自动生成表头
  13. 【计算机网络】物理层
  14. 十三年来,淘宝走过的大数据之路
  15. Cortex-M3技术参考手册 2022年3月1日
  16. 别傻傻分不清docker run 和 start 的区别了
  17. 苹果可以访问linux的smb,Samba For iOS让iPhone使用网上邻居使用体验教程
  18. C# GDAL 数字图像处理Part7 仿射变换图像配准
  19. office修复找不到msi_windows7系统下打开office提示缺少pro11msi如何解决
  20. DDD领域驱动实现概要设计

热门文章

  1. 详解apache的allow和deny
  2. Cocos引擎拥抱Xbox 跨平台支持再升级
  3. if与else if的区别
  4. LTE重选算法及相关参数
  5. 基于微信小程序的药店管理系统药品售卖平台【数据库设计、论文、源码、开题报告】
  6. [c/c++][Linux] 时间戳转换为tm,time_t,timeval
  7. 【转】PDF电子书分享
  8. 近期python作业导航和提示
  9. 服务器光驱装系统教程图解,图文解析win7系统光驱装系统的具体步骤
  10. JAVA课程设计--石头剪刀布