详解vue beforeEach 死循环问题解决方法
什么是beforeEach?
beforeEach是一个vue-router的路由导航钩子,一般我用它做路由守卫。
什么是路由守卫?
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。对此,vue-route提供的beforeRouteUpdate可以方便地实现导航守卫(navigation-guards)。导航守卫(navigation-guards)这个名字,听起来怪怪的,但既然官方文档是这样翻译的,就姑且这么叫吧。**
文档地址:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html
举个例子,当我们没有登录的时候,跳转到登录页面。如果登录了,则正常跳转。
下面我们来看下死循环代码。
exportconstrouter=newRouter(RouterConfig); router.beforeEach((to,from,next)=>{ lettoken=sessionStorage.getItem('token'); if(token){ next(); }else{ next({path:'/p404'}) } });
当token不存在于session中,跳转到/p404,此时路由改变,再次进行判断,则又跳转到/404,由此造成了死循环。在代码中进行一次判断,如果跳到p404了,就让它安心的进路由吧。修改后代码如下。
exportconstrouter=newRouter(RouterConfig); router.beforeEach((to,from,next)=>{ lettoken=sessionStorage.getItem('token'); if(token){ next(); }else{ if(to.path=='/p404'){ next(); }else{ next({path:'/p404'}) } } });
到此这篇关于详解vuebeforeEach死循环问题解决方法的文章就介绍到这了,更多相关vuebeforeEach死循环内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。