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

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

作者头像
全栈程序员站长
发布于 2022-09-13 00:17:53
发布于 2022-09-13 00:17:53
3.9K00
代码可运行
举报
运行总次数:0
代码可运行

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

文章目录


一、前言

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

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

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

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

两种函数:

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

二、全局钩子函数

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
const router = new VueRouter({ 
   
  routes: [
    { 
   
      path: '/login',
      component: Login,
      beforeEnter: (to, from, next) => { 
   
        // ...
      },
      beforeLeave: (to, from, next) => { 
   
        // ...
      }
    }
  ]
})

四、路由组件钩子

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var routes = [
    { 
   
    path:'/home',
    component:home,
    name:"home"
    }
]

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

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

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

  • beforeRouteEnter
  • beforeRouteUpdate (2.2 新增)
  • beforeRouteLeave

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【面试题解】vue-router有几种钩子函数?具体是什么及执行流程是怎样的?
顾名思义,是要定义在全局的,也就是我们 index.js 中的 router 对象。
一尾流莺
2022/12/10
8240
【面试题解】vue-router有几种钩子函数?具体是什么及执行流程是怎样的?
Vue-Router模式、钩子
上一篇主要写了一下vuer-router的基本使用,可以说解决温饱了,下面就再来点下午茶吧
木子墨
2018/09/13
7710
vue-router 导航(守卫)钩子
路由的导航守卫顾名思义就是控制路主要用来通过跳转或取消的方式守卫导航。总的来说总共有三种,分别是:
OECOM
2020/07/01
9940
VueRouter导航守卫
vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航,简单来说导航守卫就是路由跳转过程中的一些钩子函数,路由跳转是一个大的过程,这个大的过程分为跳转前中后等等细小的过程,而在每一个过程中都有钩子函数,这些钩子函数能使我们在这些过程中进行一些操作,这就是导航守卫。
WindRunnerMax
2020/11/04
1.4K0
路由守卫
相信大家也知道大部分的网页版引应用,“不登录就不给看!”,于是,我也给自己的项目添加了这个小细节。如何实现呢?当然是使用路由守卫啦。
橘子君丶
2023/03/06
9780
路由守卫
Vue | 路由守卫面试常考
Vue Router 路由守卫 导图目录 路由守卫分类 全局路由守卫 单个路由守卫 组件路由守卫 路由守卫执行的完整过程 <hr/> 路由守卫分类 全局路由 单个路由独享 组件内部路由 每个路由守卫的钩子函数都有 3 个参数: to : 进入的目标路由from : 离开的路由next : 控制路由 在跳转时进行的操作,一定要执行。它有 4 个行为:next() : 钩子都执行完了,进入到下一个路由当中。next(false): 中断路由进入下一个路由。 next('/') : 根据你路由跳转判断
程序员海军
2022/02/15
1.1K0
vue-router 的基本使用和路由守卫
在vue中实现路由还是相对简单的。因为我们页面中所有内容都是组件化的,我们只要把路径和组件对应起来就可以了,然后在页面中把组件渲染出来。
青梅煮码
2023/03/02
3.1K0
【Vue Router】010-导航守卫
“导航”,表示路由正在发生改变。vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。主要用于在导航过程中重定向和取消路由,或者添加权限验证、数据获取等业务逻辑。
訾博ZiBo
2025/01/06
880
【Vue Router】010-导航守卫
Vue-Router学习笔记,持续记录
随着 ajax 的流行,异步数据请求交互运行在不刷新浏览器的情况下进行。而异步交互体验的更高级版本就是 SPA —— 单页应用。单页应用不仅仅是在页面交互是无刷新的,连页面跳转都是无刷新的,为了实现单页应用,所以就有了前端路由。 类似于服务端路由,前端路由实现起来其实也很简单,就是匹配不同的 url 路径,进行解析,然后动态的渲染出区域 html 内容。但是这样存在一个问题,就是 url 每次变化的时候,都会造成页面的刷新。那解决问题的思路便是在改变 url 的情况下,保证页面的不刷新。在 2014 年之前,大家是通过 hash 来实现路由,url hash 就是类似于:
房东的狗丶
2023/02/17
9.3K0
vue全家桶之vue-router
vue-router默认是通过哈希路由的方式实现的。这是一种比较low的方式。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。 使用后对搜索引擎比较友好,好看。缺点是后端要nginx配置。
一粒小麦
2019/07/18
1.3K0
vue全家桶之vue-router
超详细!Vue-Router手把手教程
最近在重温vue全家桶,再看一遍感觉记忆更深刻,所以专门记录一下(本文vue-router版本为v3.x)。
全栈程序员站长
2022/09/07
2K0
[ Vue ] 通过使用 Vue-Router 梳理通用知识点
vue 是 Vue Router 是 Vuejs 官方的路由器,他和 Vue.js 深度集成,是用于单页应用中组件之间的导航,本质上就是通过 components 和 router 进行映射绑定,使用 router-link 传入指定的组件地址,通过 router-view 渲染已经和组件地址绑定好的组件。
GavinUI
2021/07/19
1.5K0
[ Vue ] 通过使用 Vue-Router 梳理通用知识点
Vue Router 10 条高级技巧
针对复用组件(只是路由参数发生改变),生命周期函数钩子不会被调用,如何能刷新组件了?
皮小蛋
2021/05/06
1.2K0
Vue Router 10 条高级技巧
vue-router详解及实例
用户进行了交互操作,现在要对页面内容进行变更,可以通过javascript进行动态替换DOM,但是其不便于分享、收藏,对于搜索引擎和用户来说都是不友好的!
奋飛
2019/08/14
3K0
Vue router 应用问题记录
beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave
luciozhang
2023/04/22
6970
Vue Router 详解
Vue Router 是 Vue.js 生态系统中的一个核心插件,旨在帮助开发者轻松地在单页面应用程序 (SPA) 中实现路由功能。在这篇博客中,我们将深入探讨 Vue Router 的各个方面,包括其基本概念、配置和高级用法。
繁依Fanyi
2024/08/04
1120
VUE框架:vue2转vue3全面细节总结(2)导航守卫
全局前置守卫通常用来做权限控制,使用 router.beforeEach 即可添加:
淼学派对
2023/10/14
4000
VUE框架:vue2转vue3全面细节总结(2)导航守卫
Vue---导航守卫使用方法详解
正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。
半指温柔乐
2018/12/28
1.5K0
Vue官方路由管理器Vue-router入门教程
前几天写了 Vue状态管理模式:Vuex入门教程 ,今天再整理一下 Vue Router 的入门笔记。
德顺
2020/12/07
2.5K0
第十二章:vue路由进阶使用
配置路由规则 routes name:‘命名路由’ path:‘路径’ component=()=>import 一级路由 /
张哥编程
2024/12/13
760
相关推荐
【面试题解】vue-router有几种钩子函数?具体是什么及执行流程是怎样的?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验