问题描述

Error: Redirected when going from “/login” to “/home” via a navigation guard.

// Navigation cancelled from "/home/find" to "/home/study" with a new navigation.
阻止了页面跳转会报错---next(false)
// Redirected when going from "/home/find" to "/home/study" via a navigation guard.
阻止了页面重定向会报错 --- next('login')

但是奇怪的是不带参数使用next()时不报错,所以解决办法就是↓↓↓
router.push('login') // 直接路由跳转
效果一样,不报错

还有以下测试结果得出的结论

router.push('login) // 先跳转
next() // 再确认这一次的守卫跳转,会覆盖

会导致禁止跳转报错————所以可以得知router.push也有阻止跳转的作用,只是不报错。

router.push('login)
next(‘login’)

会导致重定向报错,并且第二句会把第一句的结果覆盖

结论

next出错就用router.push,如果router.push也出错就可以采取其他网友的解决办法办法,或者是catch捕获,或者是修改push在原型上的方法。

经过上述代码可知在导航守卫里,两种跳转都有阻止跳转并重定向的功能,并且会互相覆盖。如果有需要跳转重定向,使用router.push就可以了

还有,实际上,报错并不会影响实际功能。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐