beforeEach实现导航守卫案列教程

这次给大家带来beforeEach实现导航守卫案列教程,beforeEach实现导航守卫的注意事项有哪些,下面就是实战案例,一起来看一下。

路由跳转前做一些验证,比如登录验证(未登录去登录页),是网站中的普遍需求。对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards)。

导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧。

贴上文档地址:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

先来摘抄一段文档中beforeRouteUpdate 的用法:

你可以使用 router.beforeEach 注册一个全局前置守卫:

const router = new VueRouter({ ... }) router.beforeEach((to, from, next) => {  // ... })

登录后复制

当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于 等待中。

每个守卫方法接收三个参数:

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next(‘/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

确保要调用 next 方法,否则钩子就不会被 resolved。

下面写一个例子,上一篇博客中我们的账户页,包括课程和订单,都需要在跳转前判断是不是已登录;已登录的情况再去登录页,跳转至首页:

const vueRouter = new Router({   routes: [     //......     {      path: '/account',      name: 'account',      component: Account,      children: [       {name: 'course', path: 'course', component: CourseList},       {name: 'order', path: 'order', component: OrderList}      ]     }   ] }); vueRouter.beforeEach(function (to, from, next) {   const nextRoute = [ 'account', 'order', 'course'];   const auth = store.state.auth;   //跳转至上述3个页面   if (nextRoute.indexOf(to.name) >= 0) {     //未登录     if (!store.state.auth.IsLogin) {       vueRouter.push({name: 'login'})     }   }   //已登录的情况再去登录页,跳转至首页   if (to.name === 'login') {     if (auth.IsLogin) {       vueRouter.push({name: 'home'});     }   }   next(); });

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS怎么储存原始值与引用值

JS用正则判断出生日期

以上就是beforeEach实现导航守卫案列教程的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2763362.html

(0)
上一篇 2025年3月8日 10:10:01
下一篇 2025年3月8日 10:10:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Vue路由动态重定向与导航守卫的实现

    这次给大家带来Vue路由动态重定向与导航守卫的实现,Vue路由动态重定向与导航守卫实现的注意事项有哪些,下面就是实战案例,一起来看一下。 根据vue官方文档,对于重定向有详细的示例,但是关于使用方法动态重定向的描述却不多,重定向部分的描述如…

    2025年3月8日
    200
  • 在Node.js中pm2的使用(图文教程)

    pm2 是一个带有负载均衡功能的Node应用的进程管理器。可以把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载。 pm2的主要特性: 1、内建负载均衡(使用Node cluster 集群模块) 2、后台运行 3…

    2025年3月8日
    200
  • JavaScript基础心法(图文教程,详细为你解答)

    前言 说到深浅拷贝,必须先提到的是JavaScript的数据类型,之前的一篇文章JavaScript基础心法——数据类型说的很清楚了,这里就不多说了。 需要知道的就是一点:JavaScript的数据类型分为基本数据类型和引用数据类型。 对于…

    编程技术 2025年3月8日
    200
  • ECMAscript 变量作用域总结教程

    这篇文章主要介绍了ecmascript 变量作用域,通过使用var操作符声明和未使用var操作符声明两种情景做出了解释,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。 使用var操作符声明的变量与未使用var操作符声明…

    2025年3月8日
    200
  • ECMAScript6新特性之let、const(图文教程)

    下面小编就为大家带来一篇浅谈ecmascript6新特性之let、const。现在就分享给大家,也给大家做个参考。 接下来来介绍一下es6中的新特性之“let”。首先,这个玩意儿其实和var这个命令类似,都是用于声明变量的,但是所声明的变量…

    2025年3月8日 编程技术
    200
  • javascript 中事件委托(图文教程)

    这篇文章主要介绍了javascript 中的事件委托详解的相关资料,需要的朋友可以参考下 这几天看到一个面试题,大概就是,让你给1000个li都添加一个click事件,应该怎么添加?大多数人第一开始的感觉可能就是,每个li上边都添加一个呗,…

    2025年3月8日
    200
  • Javascript闭包与函数柯里化浅析(图文教程)

    这篇文章主要介绍javascript闭包与柯里化,通俗易懂,需要的朋友可以参考下。 闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式…

    编程技术 2025年3月8日
    200
  • dwz 如何去掉ajaxloading(图文教程)

    下面为大家详细介绍下具体的去掉方法,有兴趣的朋友可以来看看。 最近使用dwz来做项目,有时候在ajax的时候并不想使用dwz的loading。 所以就像去掉,很简单,只需要一行代码:  $.ajaxSettings.global=false…

    编程技术 2025年3月8日
    200
  • Ajax跨域请求的原理(图文教程)

    这篇文章主要为大家详细介绍了ajax跨域请求的原理,ajax怎么样做跨域请求?具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Ajax跨域请求的具体实现过程,供大家参考,具体内容如下 下面我们在本地建两个站点演示一下 …

    2025年3月8日 编程技术
    200
  • Angular4.x通过路由守卫进行路由重定向步骤详解

    这次给大家带来Angular4.x通过路由守卫进行路由重定向步骤详解,Angular4.x通过路由守卫进行路由重定向的注意事项有哪些,下面就是实战案例,一起来看一下。 需求: 最近在做一个网上商城的项目,技术用的是Angular4.x。有一…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论