Vue 的 beforeEnter 和 beforeLeave 是兩個重要的生命周期函數(shù),在路由的過渡中起到了非常重要的作用。
beforeEnter 函數(shù)是在頁面進入路由之前被調(diào)用的,可以在該函數(shù)中進行路由攔截、判斷是否需要進行權(quán)限驗證等等操作。
const router = new VueRouter({
routes: [
{
path: '/dashboard',
component: Dashboard,
beforeEnter: (to, from, next) =>{
// 判斷用戶是否登錄,未登錄則跳轉(zhuǎn)到登錄頁
if (isAuthenticated()) {
next();
} else {
next('/login');
}
}
}
]
})
在上面的代碼中,我們定義了一個 beforeEnter 函數(shù),用來判斷用戶是否已登錄。如果用戶已登錄,則會調(diào)用 next() 來繼續(xù)前往 Dashboard 頁面;如果用戶未登錄,則會調(diào)用 next('/login'),將用戶重定向到登錄頁面。
beforeLeave 函數(shù)是在路由切換到新頁面之前被調(diào)用的,同樣可以用來進行頁面攔截、提示用戶是否離開等等操作。
const router = new VueRouter({
routes: [
{
path: '/dashboard',
component: Dashboard,
beforeLeave: (to, from, next) =>{
// 判斷是否需要提示用戶離開頁面
if (shouldConfirmLeave()) {
const answer = window.confirm('確定要離開本頁面嗎?');
if (answer) {
next();
} else {
next(false);
}
} else {
next();
}
}
}
]
})
在上面的代碼中,我們定義了一個 beforeLeave 函數(shù),用來判斷用戶是否需要提示離開頁面。如果需要提示,則會彈出一個 confirm 對話框,詢問用戶是否要離開;如果用戶點擊確認,則調(diào)用 next() 繼續(xù)離開頁面;如果用戶取消離開,則調(diào)用 next(false),取消離開頁面。
總之,在路由的過渡過程中,beforeEnter 和 beforeLeave 函數(shù)是不可或缺的,可以用來控制路由的進入和離開,增加頁面交互的靈活性和可操作性。