前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue进阶(十八):router.beforeEach 与 router.afterEach 钩子函数

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

作者头像
全栈程序员站长
发布2022-09-13 08:17:53
1.7K0
发布2022-09-13 08:17:53
举报
文章被收录于专栏:全栈程序员必看

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

文章目录


一、前言

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

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

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

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

两种函数:

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

二、全局钩子函数

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

代码语言:javascript
复制
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()函数。

三、路由钩子函数

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

代码语言:javascript
复制
const router = new VueRouter({ 
   
  routes: [
    { 
   
      path: '/login',
      component: Login,
      beforeEnter: (to, from, next) => { 
   
        // ...
      },
      beforeLeave: (to, from, next) => { 
   
        // ...
      }
    }
  ]
})

四、路由组件钩子

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

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

代码语言:javascript
复制
var routes = [
    { 
   
    path:'/home',
    component:home,
    name:"home"
    }
]

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

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

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

  • beforeRouteEnter
  • beforeRouteUpdate (2.2 新增)
  • beforeRouteLeave

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

代码语言:javascript
复制
beforeRouteLeave(to, from, next) { 
   
    next()
},
beforeRouteEnter(to, from, next) { 
   
    next()
},
beforeRouteUpdate(to, from, next) { 
   
    next()
},
data:{ 
   },
method: { 
   }

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、前言
  • 二、全局钩子函数
  • 三、路由钩子函数
  • 四、路由组件钩子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档