Vue导航守卫常犯错误 Error: Redirected when going from “/login” to “/home” via a navigation guard.
问题描述Error: Redirected when going from “/login” to “/home” via a navigation guard.原因这是组件页面代码// 路由跳转this.$router.push('/home/user')// 保存token 内部封装了LocalStorage.setItemsetToken('loginToken', res.data.jwt
·
问题描述
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就可以了
还有,实际上,报错并不会影响实际功能。
更多推荐
已为社区贡献1条内容
所有评论(0)