Vue进阶(十八):router.beforeEach 与 router.afterEach 钩子函数

Vue进阶(十八):router.beforeEach 与 router.afterEach 钩子函数在路由跳转的时候,我们需要一些权限判断或者其他操作。这个时候就需要使用路由的钩子函数。定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数。总体来讲vue里面提供了三大类钩子,两种函数1、全局钩子2、某个路由的钩子3、组件内钩子两种函数:1、Vue.beforeEach(function(to,form,next){})/*在跳转之前执行*/2.Vue.after…

大家好,又见面了,我是你们的朋友全栈君。


一、前言

路由跳转的时候,我们需要做一些权限判断或者其他操作。这个时候就需要使用路由钩子函数。

定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数。

总体来讲,vue提供三大类钩子,

  • 全局钩子
  • 某个路由的钩子
  • 组件内钩子

两种函数:

  • Vue.beforeEach(function(to,form,next){}) /*在跳转之前执行*/

  • Vue.afterEach(function(to,form))/*在跳转之后判断*/

二、全局钩子函数

顾名思义,它是对全局有效的一个函数。

router.beforeEach((to, from, next) => { 
   
    let token = router.app.$storage.fetch("token");
    let needAuth = to.matched.some(item => item.meta.login);
    if(!token && needAuth) return next({ 
   path: "/login"});
    next();
});

beforeEach函数有三个参数:

  • to:router即将进入的路由对象;
  • from:当前导航即将离开的路由;
  • next:Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。

注:afterEach()不用传next()函数。

三、路由钩子函数

顾名思义,它是写在某个路由里的函数,本质上跟组件内函数没有区别。

const router = new VueRouter({ 
   
  routes: [
    { 
   
      path: '/login',
      component: Login,
      beforeEnter: (to, from, next) => { 
   
        // ...
      },
      beforeLeave: (to, from, next) => { 
   
        // ...
      }
    }
  ]
})

四、路由组件钩子

注意:这里说的是路由组件

路由组件 属于 组件,但组件 不等同于 路由组件! 所谓的路由组件:直接定义在routercomponent处的组件。如:

var routes = [
    { 
   
    path:'/home',
    component:home,
    name:"home"
    }
]

在子组件中调用路由钩子函数是无效的。

在官方文档上是这样定义的:

可以在路由组件内直接定义以下路由导航钩子:

  • beforeRouteEnter
  • beforeRouteUpdate (2.2 新增)
  • beforeRouteLeave

这里简单说下钩子函数用法:它是和data,methods平级的。

beforeRouteLeave(to, from, next) { 
   
    next()
},
beforeRouteEnter(to, from, next) { 
   
    next()
},
beforeRouteUpdate(to, from, next) { 
   
    next()
},
data:{ 
   },
method: { 
   }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149043.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux dlopen 内存版本,dlopen函数详解

    linux dlopen 内存版本,dlopen函数详解Linux提供了一套API来动态装载库。下面列出了这些API:-dlopen,打开一个库,并为使用该库做些准备。-dlsym,在打开的库中查找符号的值。-dlclose,关闭库。-dlerror,返回一个描述最后一次调用dlopen、dlsym,或dlclose的错误信息的字符串。C语言用户需要包含头文件dlfcn.h才能使用上述API。glibc还增加了两个POSIX标准中没有的API:…

    2025年7月14日
    4
  • 风中有朵雨做的云解析_MySQL comment

    风中有朵雨做的云解析_MySQL comment其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。DELIMITER$$DROPTRIGGERIFEXISTS`updateegopriceondelete`$$CREATETRIGGER`updateego

    2025年8月11日
    2
  • Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula「建议收藏」

    Ubuntu安装Source Insight导入Android源码并设置仿IDEA主题Darcula「建议收藏」预览先来张图给大家感受下效果,然后我再慢慢道来过程,保证你避免每一步的坑。我们要做什么1、由于SourceInsight(以下简称SI)是Windows应用,所以不能直接安装在Linux上,于是我们要借助wine,所以第一步会介绍wine的安装过程和坑;2、介绍SI在Linux(以Ubuntu16.04为例)上的安装,并介绍如何导入免费证书(个人建议大家有条件还是付费支持一下SI这个…

    2022年6月27日
    58
  • 归并排序算法详细图解_归并排序算法详解

    归并排序算法详细图解_归并排序算法详解一、什么是归并排序1.概念归并排序(Mergesort)是建立在归并操作上的一种有效的排序算法,归并排序对序列的元素进行逐层折半分组,然后从最小分组开始比较排序,合并成一个大的分组,逐层进行,最终所有的元素都是有序的2.算法原理这是一个无序数列:4、5、8、1、7、2、6、3,我们要将它按从小到大排序。按照归并排序的思想,我们要把序列逐层进行拆分序列逐层拆分如下然后从下往上逐层合并,首先对第一层序列1(只包含元素4)和序列2(只包含元素5)进行合并创建一个大序列,序列长度为两个小序列长度

    2022年10月20日
    3
  • pycharm激活成功教程教程

    pycharm激活成功教程教程转载查询 https blog csdn net u014044812 article details 86679150 转载于 https www cnblogs com SakuraYuanYu p 10542237 html

    2025年8月1日
    12
  • Android开发之adb命令安装apk的问题

    Android开发之adb命令安装apk的问题众所周知,有时候我们只有apk安装包不一定可以直接在AS跑起来,所以有了adb命令安装使用adb命令的前提:1.你的首先配置adb的环境变量查看环境变量配置方法2.配置好后请检查是否配置成功?如下图看到AndroidDebugBridgeversion1.0.39即可配置成功3.开始使用adb命令安装apk打开cmd,输入adbinstallapk所在路径即可,输入回车即可安装还可以使…

    2022年6月4日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号