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)
上一篇 2022年6月25日 下午8:36
下一篇 2022年6月25日 下午8:36


相关推荐

  • 正则过滤内网地址和网段不一致_ip地址不是局域网网段的ip

    正则过滤内网地址和网段不一致_ip地址不是局域网网段的ip1.问题描述我要过滤出ABC类内网地址和CIDR格式的内网IP段主要是以下段1.A类地址:10.0.0.0~10.255.255.2552.B类地址:172.16.0.0~172.31.255.2553.C类地址:192.168.0.0~192.168.255.2552.解决问题正则表达式:^(10\.\d{1,3}\.\d{1,3}\.((0\/([89]|1[0-9]|2\d|3[012]))|(\d{1,3})))|(172\.(1[6789]|2\\d|3[01])\.\d{1,3

    2025年11月18日
    6
  • 微信开发工具使用git

    微信开发工具使用git1 初始化本地仓库在微信 Web 开发者工具中点击 版本管理 由于是新建项目 并没有初始化过 Git 仓库 所以项目会提示初始化 Git 仓库 点击 初始化 Git 仓库 点击 确认 完成本地仓库的初始化 这一步骤相当于执行 gitinit 命令 2 初始化完成后 我们可以看到本地的仓库和当前的 Git 状态 下图为微信 Web 开发者工具初始化后的版本控制面板 3 配置仓库信息初

    2026年3月19日
    1
  • @Validated注解使用

    @Validated注解使用@ValidatedpublicStringsyncTable(@ValidatedSyncByTableRequestrequest){logger.debug("request_info:"+JsonUtil.toJson(request));Stringresponse=Response.success(syncService….

    2025年7月11日
    3
  • 以太坊矿机组装教程_eth矿机组装

    以太坊矿机组装教程_eth矿机组装以太坊挖矿矿机组装指南伴随着比特币的热潮,“矿机”一词出现在了大众的视野中。那么何为“矿机”呢?一个矿机的本质就是一个电脑机箱,它的硬件组成与普通的台式机箱几乎相同。有区别的是它的主板上PCIE插槽比较多,电源的功率比较大。在这里简单解释下为什么会有这两点不同:1.PCIE插槽越多可连接的显卡就越多,单个矿机的算力就越大。2.电源功率越大能带动的显卡越多。所以大家在选择配置时一定要根据你的显卡…

    2022年9月30日
    6
  • Claude Code教程(四)| Claude Code Skills 完全指南

    Claude Code教程(四)| Claude Code Skills 完全指南

    2026年3月15日
    3
  • 河南计算机职称考试模块选择,2016职称计算机考试模块Dreamweaver选择冲刺题1

    河南计算机职称考试模块选择,2016职称计算机考试模块Dreamweaver选择冲刺题1单选题1.网页的主体内容将写在什么标签内部:A.标签B.标签C.标签D.标签答案:A2.下面关于查看源代码说法正确的是:A.一般不能在IE中查看网页的源代码B.在DreamweaverMX中可以使用代码监视器(CodeInspector)查看的页面的源代码C.在DreamweaverMX中只有一种方法可以查看网页的源代码D.以上说法都错答案:B3.在Dreamweaver中,下面关于使…

    2022年6月2日
    41

发表回复

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

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