美文网首页
路由守卫无限循环和报错捕捉

路由守卫无限循环和报错捕捉

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-05-28 06:12 被阅读0次

先看路由守卫无限循环问题

因为你的next({name:login})是相当于⼀个路由跳转,它会再次触发全局路由守卫,你⼜进⼊了全局路由守卫进⾏再次判断,如此循环

想要结束路由守卫,整段代码的逻辑必须由next()进⾏结尾。⽐如当需要进⼊登录页的时候

整体代码如下:

守卫报错扑捉

// 让路由守卫的错误不显示(用路由守卫记得加上这句,重写下抛出错误机制)

// navigationduplicate:避免到当前位置“/about?page=5”的冗余导航。

// 如果当前路由已经是/about,使用编程式导航再次跳转到/about路由,会被认为导航多余,报错,如上

// 解决方案如下:原理是捕获push函数报错,不抛出错误

const originalPush = VueRouter.prototype.push

VueRouter.prototype.push = function push(location) {

  return originalPush.call(this, location).catch(err=>err)

}

相关文章

网友评论

      本文标题:路由守卫无限循环和报错捕捉

      本文链接:https://www.haomeiwen.com/subject/vogvprtx.html