更新時間:2023-03-28 來源:黑馬程序員 瀏覽量:
Vue 路由守衛(wèi)是在 Vue Router 中提供的一種功能,它允許您在導航到某個路由前、路由變化時或導航離開某個路由時執(zhí)行代碼。Vue 路由守衛(wèi)提供了以下幾種類型:
router.beforeEach 在進入路由前執(zhí)行的鉤子函數,它會接收三個參數:to(要進入的路由對象)、from(當前導航正要離開的路由對象)和 next(必須調用該函數才能進入下一個鉤子)。
router.beforeResolve 在路由解析之前執(zhí)行的鉤子函數,也會接收 to、from 和 next 參數。與 beforeEach 的區(qū)別在于,該守衛(wèi)在全局守衛(wèi)中被最后調用,因此它在所有路由組件內的守衛(wèi)和異步路由組件被解析之后才被調用。
router.afterEach 在進入路由后執(zhí)行的鉤子函數,它不接收 next 函數,也不能改變導航。
beforeEnter 在路由配置中定義的鉤子函數,它會在路由被激活之前調用。它和全局前置守衛(wèi)的參數一樣,但是只對該路由生效。
·beforeRouteEnter:在路由進入時異步加載組件前調用。
·beforeRouteUpdate:在當前路由改變,但是該組件被復用時調用(例如,從 /users/1 導航到 /users/2 時)。
·beforeRouteLeave:在離開當前路由時調用。
要設置路由守衛(wèi),可以在路由實例的配置對象中添加相應的屬性。例如,設置全局前置守衛(wèi)可以這樣寫:
const router = new VueRouter({ routes: [...], }) router.beforeEach((to, from, next) => { // ... })
使用場景包括但不限于:
1.驗證用戶權限:在進入某些頁面之前檢查用戶是否已登錄或是否有權限訪問該頁面。
2.加載數據:在進入頁面前加載必要的數據,例如在組件內使用 beforeRouteEnter 鉤子函數異步獲取數據。
3.路由重定向:在進入某些頁面時需要重定向到另一個頁面,例如在全局前置守衛(wèi)中檢查用戶是否已登錄并將未登錄用戶重定向到登錄頁面。
4.路由攔截:在某些情況下需要取消路由導航,例如在組件內使用 beforeRouteLeave 鉤子函數防止用戶誤操作離開當前頁面。