vue-router中的beforeEach

vue-router中的beforeEach最近在做vue项目的开发,用到的技术栈主要是vue相关的,在开发这个项目的时候,设计到了权限,因为是后台管理系统,不同的身份和角色访问系统的时候,系统所展现出来的可访问内容都是不一样的,有兴趣的同学可以参考下RBAC(以角色为基础的权限管理设计)这篇文章写得很详细,很直观,我写这篇文章主要是想要分享一下前端的技术栈vue-router是如何处理的,以及踩过的坑。vue-router可以参考官方文档vue-router,官方文档中介绍的很详细,解决权限问题,就用到了addRoutes这个API,去动态添

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

最近在做vue项目的开发,用到的技术栈主要是vue相关的,在开发这个项目的时候,设计到了权限,因为是后台管理系统,不同的身份和角色访问系统的时候,系统所展现出来的可访问内容都是不一样的,有兴趣的同学可以参考下RBAC(以角色为基础的权限管理设计)这篇文章写得很详细,很直观,我写这篇文章主要是想要分享一下前端的技术栈vue-router是如何处理的,以及踩过的坑。

  • vue-router

可以参考官方文档vue-router,官方文档中介绍的很详细,解决权限问题,就用到了addRoutes这个API,去动态添加路由,我项目目前使用的vue-router的版本号是3.0.1,我把我初始化创建路由实例的代码可以展示给你们看一下的:

vue-router中的beforeEach

  • 动态路由处理方式

因为每次在进行路由跳转的时候,都会触发对应的钩子函数,可以参考官网的文档注解:

vue-router中的beforeEach

本人在项目里面是运用了beforeEach这个钩子函数来监控路由的变化的,具体可以参看代码:

vue-router中的beforeEach

 

  • beforeEach实现的思路如下:

每次通过vue-router进行页面跳转,都会触发beforeEach这个钩子函数,这个回调函数共有三个参数,to,from,next这三个参数,to表示我要跳转的目标路由对应的参数,from表示来自那个路由,就是操作路由跳转之前的,即将离开的路由对应的参数,next是一个回调函数,一定要调用next方法来resolve这个钩子函数;

vue-router中的beforeEach

这里在使用beforeEach的时候,应该要注意,如果这个beforeEach函数没有合理利用的情况下,就会陷入到无限循环之中。看到的现象就是整个页面不停的刷新,其实从代码的角度来看是一致在进行路由跳转,也就是一致在不停的执行beforeEach这个函数。

当在beforeEach这个函数中调用next({path:’/home’})的时候,会中断当前导航;比如当前导航是去/a,那么遇next({path:’/home’})之后,就会把to.path改成home,然后重新触发beforeEach这个钩子函数,注意是重新触发,而不是在当前这个钩子的函数的基础上去执行;之前因为对这一点理解的不透彻,以为只要是调用next({path:’/home’})就可以直接跳转到home了,但是没有像预期的那样,反而陷入到了无限循环之中;当重新触发以后,因为没有加上合理的判断条件,所以会一直循环。
解决这个无限循环的办法就是加上一个判断,如果to.path===‘/home’,就执行next();这样子就不会无限循环了。

可以看下代码示例:

vue-router中的beforeEach

 

以上就是本人在本次写项目的时候踩过的坑,跟大家分享一下经验,喜欢的话,就点个赞吧!

 

 

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Struts2运行错误:Error filterStart

    Struts2运行错误:Error filterStart困扰我近10多天的问题,让我在框架功力修炼上几乎停滞不前,今天问题被KO,小小的高兴下。 纯洁的web.xml文件struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

    2022年7月11日
    10
  • databus教程_搭建区观察记录表

    databus教程_搭建区观察记录表最近公司因需要同步oracle数据到mysql,调研了Datax对于大数据量的同步代价有些大。开源的databus需要对源码做二次开发,才可以使用,前期我们搭建后,用自带的person表做了测试。确认可行后研发更改了源码。准备工作:1.配制gradle和java2.ojdbc6-11.2.0.2.0.jar放到如下目录:databus-master/sandbox-repo/com/oracle/ojdbc6/11.2.0.2.0/更改defaultEnvironment.gradl

    2022年8月31日
    0
  • topcoder srm 697 div1 -3

    topcoder srm 697 div1 -3

    2021年6月20日
    89
  • 将DedeCMS从子目录移动到根目录的方法

    将DedeCMS从子目录移动到根目录的方法

    2021年10月10日
    40
  • Canny算子边缘检测原理及实现

    Canny算子边缘检测原理及实现写在前面Canny边缘检是在在1986年提出来的,到今天已经30多年过去了,但Canny算法仍然是图像边缘检测算法中最经典、先进的算法之一。相比Sobel、Prewitt等算子,Canny算法更为优异。Sobel、Prewitt等算子有如下缺点:没有充分利用边缘的梯度方向。 最后得到的二值图,只是简单地利用单阈值进行处理。而Canny算法基于这两点做了改进,提出了:基于边缘梯度…

    2022年5月7日
    71
  • mac idea2021激活码【2021最新】

    (mac idea2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    42

发表回复

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

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