router.beforeEach 死循环,无法跳转到指定页面问题解决

思路:

要想解决问题思路很重要,首先要搞清楚为什么next指定了页面却没有进行正确跳转

在解决这个问题之前,我们要回归下beforeEach 。beforeEach 是router提供的全局前置导航守卫。

beforeEach 提供了3个参数:

to:到哪去,(路由对象:包含name,params,meta等属性)

from:从哪来,(路由对象:包含name,params,meta等属性)

next:这是一个可选方法参数,也是我们这次要记录的重点。这个方法可以把守卫的作用发挥的淋漓尽致,它守护每一次路由的正确走向。这里的每一次很重要。因为我们这次错误的原因就是因为忽略了每一次。引用官方文档中的一句话就是,确保 next 在任何给定的导航守卫中都被严格调用一次。说白点,就是一旦用了next(),也就意味着会再次调用router.beforeEach()。

所以这次错误的原因就是:逻辑判断没有写好就会出现,死循环,留在当前页没有跳转到我们指定的下一个页面。

找到问题了,怎么解决呢?

if...else...难道我们还不会吗?所以,方法就是把逻辑补充完成,不要有所遗漏。

问题修改示范:

死循环代码截图:

 

 

 

 

结果:

 

 

 

 无法跳转代码截图:

 

 

结果

 

 

 

正确代码:

 

posted @ 2022-08-25 11:06  lovelyclove  阅读(2294)  评论(0编辑  收藏  举报