在做一個(gè)登陸功能的時(shí)候遇到的一個(gè)小問題额嘿。需求是用戶沒有登錄的時(shí)候打開其他頁面都是跳轉(zhuǎn)到登錄頁面,登陸之后則可以正常使用劣挫。查vue-router的文檔册养,發(fā)現(xiàn)使用beforeEach可以實(shí)現(xiàn)功能,于是嘗試著寫了一下:
router.beforeEach((to, from, next) => {
// 模擬登陸狀態(tài)
let isLogin = false;
if (!isLogin) {
next({path: '/login'});
}else {
next();
}
});
發(fā)現(xiàn)報(bào)錯(cuò):
大概意思是溢出了压固,也就是說每次到next又會(huì)再次進(jìn)入beforeEach球拦,所以進(jìn)入了死循環(huán)。
改造如下:
router.beforeEach((to, from, next) => {
// 模擬登陸狀態(tài)
let isLogin = false;
if (!isLogin) {
if (to.path !== '/login') {
return next({path: '/login'});
}else {
next();
}
}else {
if (to.path === '/login') {
return next({path: '/'});
}
next();
}
});
然后就正常了~