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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自定义运行时异常_数据库丢失怎么恢复

    自定义运行时异常_数据库丢失怎么恢复一、异常简单介绍:      Throwable类是Java语言中所有错误Error和异常Exception的超类,而异常分为运行时异常和非运行时异常      1、Error和运行时异常RuntimeException及其子类为非检查异常(unchecked),其它异常为检查异常(checked)。            ①RuntimeException:Runti

    2022年9月30日
    4
  • php 正则获取邮箱,PHP 邮箱正则表达式[通俗易懂]

    php 正则获取邮箱,PHP 邮箱正则表达式[通俗易懂]PHP邮箱正则表达式作者:PHPYuan时间:2018-07-0900:01:10PHP邮箱正则表达式代码如下:/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,})$/实例$mail=’runoob@runoob.com’;//邮箱地址$pattern=”/^[_a-z0-9-]+(.[_a-z0-9-…

    2022年6月17日
    29
  • 简单的WebService创建+发布Tomcat(java WebService)「建议收藏」

    简单的WebService创建+发布Tomcat(java WebService)「建议收藏」本文完全是为自己的学习过程做一个记录,大佬敬请留言指点,勿喷。一、本文环境为eclipse2019-3,jdk1.8,Tomcat7。二、WebService创建俩种方式,1、据IDE自带的webservice生成工具进行。2、通过创建servlet并利用构造函数进行publish。(具体的是利用CXF、axis等哪种框架,没搞明白,希望看见的大佬可以留言)三、1、据IDE自带的webse…

    2022年10月16日
    3
  • Robotium体验—-白盒

    Robotium体验—-白盒什么是Robotium?先说一下发音。音标类似于[rəʊbɒʃɪəm],可参照有道。Robotium是一款开源测试框架,官方定义为AndroidApp的黑盒测试框架(官方示例为白盒),适用于native/hybridapp。由于开源,该框架源码可以从github上获取,地址为https://github.com/RobotiumTech/robotium。若需要文档,j…

    2022年7月17日
    11
  • 服务器查看外网IP地址和方法

    服务器查看外网IP地址和方法返回IP地址curlip.6655.com/ip.aspxcurlwhatismyip.akamai.comwget-qO-ifconfig.cocurlicanhazip.comdig+shortmyip.opendns.com@resolver1.opendns.comcurlident.mecurlv4.ident.mecurlcu…

    2022年5月30日
    55
  • React项目的国际化

     最近做的react项目需要支持国际化,网上查了一下,发现一款很好的插件“react-intl-universal”,由阿里巴巴团队开发,这款插件是原先的国际化插件“react-intl”的升级版,“react-intl”因为一些“致命”缺陷现已被其取代,npm官网有罗列原因,有兴趣的可以去了解一下。下面具体介绍一下这款插件的使用方法。1.安装npminstallreact-i…

    2022年4月12日
    44

发表回复

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

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