1.代码问题再现:
import Router from 'vue-router'
const router = new Router({
{path: '/', component: home },
{path: '/login', component: login},
{path: '/error', component: error},
{path: '*', component: error}
})
router.beforeEach((to, from, next) => {
const isLogin = sessionStorage.getItem('loginInfo')
if (isLogin) {
next()
} else {
next('/error')
}
})
- 原因分析:会出现死循环,因为 /error 会在进入前 又要进入beforeEach中 ,这样就会一直循环下去。
- 解决处理:如何跳出这个循环即可,改为:
router.beforeEach((to, from, next) => {
const isLogin = sessionStorage.getItem('loginData')
if (isLogin) {
next()
} else {
//next('/error')
if (to.path === '/error') { //这就是跳出循环的关键
next()
} else {
next('/error')
}
}
})