当前位置: 首页 > Web前端 > vue.js

router-beforeEach死循环

时间:2023-04-01 11:07:07 vue.js

vuebeforeEach死循环问题解决详解发布时间:2020-02-2508:37:25作者:新绿儿茶味本文主要介绍vuebeforeEach死循环问题解决方法,通过文章中的示例代码非常详细,对大家的学习或者工作都有一定的参考学习价值。需要的朋友,跟着小编一起学习吧。beforeEach是什么?beforeEach是一个vue-router的路由导航钩子,一般我用它来做路由守卫。什么是路由守卫?在路由跳转前做一些验证,比如登录验证,是网站中常见的需求。对此,vue-route提供的beforeRouteUpdate可以方便的实现navigation-guards。navigation-guards这个名字听起来很奇怪,不过既然官方文档是这样翻译的,就这么叫吧。**文档地址:https://router.vuejs.org/zh/g...比如我们没有登录的时候,跳转到登录页面。如果已登录,则正常跳转。让我们看一下无限循环代码。exportconstrouter=newRouter(RouterConfig);router.beforeEach((to,from,next)=>{lettoken=sessionStorage.getItem('token');if(token){next();}else{next({path:'/p404'})}});当会话中不存在令牌时,它会跳转到/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'})}}});