vue-router全局守卫逻辑不完整造成的next()跳转至指定页面不起效
问题所在逻辑处理结构不完整逻辑处理结构不完整例如:登录跳转,若访问其他页面时,未登录,全局守卫阻碍跳转,并跳转至登录页面,已登录,允许跳转。缺失逻辑: 若访问登录页面,已登录则跳转至主页面,未登录则允许。技术解释当触发守位函数时,如果遇到next("/xxx")时,会将原本的导航中断,然后将to.path改成next("/xxx")中的地址,然后重新触发这个离开的守位函数。注意:会重新...
·
问题所在
逻辑处理结构不完整
例如:登录跳转,若访问其他页面时,未登录,全局守卫阻碍跳转,并跳转至登录页面,已登录,允许跳转。
缺失逻辑: 若访问登录页面,已登录则跳转至主页面,未登录则允许。
技术解释
当触发守位函数时,如果遇到next("/xxx")时,会将原本的导航中断,然后将to.path改成next("/xxx")中的地址,然后重新触发这个离开的守位函数。注意:会重新触发执行这个守位函数,而不是在这个钩子函数中继续执行。不要错误的认为next("/xxx")就直接去跳转了。所以当重新触发后就会继续执行,逻辑不完整就会造成死循环或不跳转等错误。
router.beforeEach((to, from, next) => {
if (to.name !== 'login') {
if (login) next()
else next({ path: '/login' })
} else {
if (login) next({ name: 'home' })
else next()
}
})
更多推荐
已为社区贡献1条内容
所有评论(0)