router.beforeEach((to, from, next) => {
// ...
})
to: Route
: 即將要進入的目標路由對象
from: Route
: 當前導航正要離開的路由
next: Function
: 必定要調用該方法來 resolve 這個鉤子。執行效果依賴 next
方法的調用參數。
next()
: 直接跳轉到to.path路徑。進行管道中的下一個鉤子。若是所有鉤子執行完了,則導航的狀態就是 confirmed (確認的)。
next(false)
: 中斷當前的導航。若是瀏覽器的 URL 改變了(多是用戶手動或者瀏覽器後退按鈕),那麼 URL 地址會重置到 from
路由對應的地址。
next('/')
或者 next({ path: '/' })
: 跳轉到一個不一樣的地址。當前的導航被中斷,而後進行一個新的導航。
- 案例
const whiteList = ['/author']
router.beforeEach((to, from, next) => {
//判斷是否是登陸
let token = getToken();
if (common_fuc.isDefine(token)) {
if (to.path === '/author') {
next({ path: '/' });
} else {
next();
}
} else {
//若是沒有登陸 判斷to.path是不是/author 是就直接next()去首頁,不然登陸
if (whiteList.indexOf(to.path) !== -1) {
//微信登陸返回頁面繼續 或跳轉到登陸頁面
next()
} else if(isWeiXin()==true&&config_site.is_debug==false){
//若是是微信登陸 而且不是調試模式
setBeforeLoginUrl(to.fullPath);
getWxAuth();
}
}
next();
})