千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  关于学院  >  技术干货  >  html5技术干货  >  正文

谈谈Vue路由守卫

来源:千锋教育
发布时间:2022-10-28 17:28:49
分享

谈谈Vue路由守卫

  1、路由守卫是什么,简单来说,导航守卫就是路由跳转前、中、后过程中的一些钩子函数,这个函数能让你操作一些其他的事儿,这就是导航守卫。

  官方解释,vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。

  2、路由守卫分类 导航守卫分为:全局的、组件内的、单个路由独享三种

  2.1 全局的 指路由实例上直接操作的钩子函数,他的特点是所有配置路由的组件都会触发 const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => { // ... }) 全局路由的钩子函数包括 beforeEach 在路由跳转前触发,参数包括to,from,next(参数会单独介绍)三个,这个钩子作用主要是用于登录验证 beforeResolve(2.5+) 这个钩子和beforeEach类似,也是路由跳转前触发,参数也是to,from,next三个,与beforeEach的区别参考官网。 afterEach 是在路由跳转完成后触发,参数包括to,from,它发生在beforeEach和beforeResolve之后,beforeRouteEnter(组件内守卫)之前。

  2.2 路由独享的 指在单个路由配置的时候也可以设置的钩子函数 const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, beforeEnter: (to, from, next) => { // ... } } ] }) 路由独享的钩子函数包括 beforeEnter与全局的beforeEach完全相同,如果都设置则在beforeEach之后紧随执行,参数to、from、next

  2.3 组件内的 指在组件内执行的钩子函数,类似于组件内的生命周期export default{ data(){ //... }, beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 this // 因为当守卫执行前,组件实例还没被创建 }, beforeRouteUpdate (to, from, next) { // 在当前路由改变,但是该组件被复用时调用 // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候, // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。

  而这个钩子就会在这个情况下被调用。 // 可以访问组件实例 this }, beforeRouteLeave (to, from, next) { // 导航离开该组件的对应路由时调用 // 可以访问组件实例 this } } 组件内的路由钩子函数包括 beforeRouteEnter 路由进入组件之前调用,参数包括to,from,next。

  该钩子在全局守卫beforeEach和独享守卫beforeEnter之后,全局beforeResolve和全局afterEach之前调用,要注意的是该守卫内访问不到组件的实例,也就是this为undefined,也就是他在beforeCreate生命周期前触发。 beforeRouteUpdate 在当前路由改变时,并且该组件被复用时调用,可以通过this访问实例。

  参数包括to,from,next。 beforeRouteLeave 导航离开该组件的对应路由时调用,可以访问组件实例this,参数包括to,from,next。

  3、路由守卫回调参数

  to:目标路由对象;

  from:即将要离开的路由对象;

  next:他是最重要的一个参数,他相当于佛珠的线,把一个一个珠子逐个串起来。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • vue配置跨域怎么操作 Vue配置跨域的操作非常简单。在Vue项目中,我们可以通过配置webpack来实现跨域请求。在Vue项目的根目录下找到config文件夹,然后打开index.js文件。在该文件中,我们可以找到一个名为
  • npm包管理工具有什么用途? npm(NodePackageManager)是JavaScript生态系统中最常用的包管理工具。它是随同Node.js安装的,默认包含在Node.js的安装包中。npm允许开发者轻松地安装、更新、卸
  • vue事件修饰符有哪些? 在Vue.js中,事件修饰符是一种用于修改事件触发行为的特殊修饰符。以下是常用的事件修饰符:1.`.stop`:阻止事件继续传播,即阻止事件冒泡。2.`.prevent`:阻止事件默认行为。3.`.c
  • vue路由守卫有哪些? 在Vue.js中,路由守卫是一种用于控制导航的机制,它允许您在路由切换前后执行相应的操作。VueRouter提供了三种类型的路由守卫:1.全局前置守卫(GlobalBeforeGuards):-`be
  • css绝对定位和相对定位 CSS中的绝对定位(absolutepositioning)和相对定位(relativepositioning)是用于控制元素在页面布局中的位置的两种常见定位方式。1.绝对定位(absolutepos
  • npm安装less用法介绍 npm(NodePackageManager)是Node.js的包管理器,它允许您安装、管理和共享JavaScript模块。要安装和使用Less(一种CSS预处理器),您可以按照以下步骤进行操作:1.