欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue 全局導航守衛

阮建安1年前8瀏覽0評論

在Vue中,導航守衛是一個重要的概念。它允許我們在切換路由或進入某個路由之前執行一些自定義邏輯。而全局導航守衛則是一種可以應用到所有路由上的導航守衛。

//全局前置守衛
router.beforeEach((to, from, next) =>{
// to:即將進入的目標 路由對象
// from:當前導航正要離開的路由對象
// next: 一定要調用該方法來 resolve 這個鉤子,執行效果依賴 next 方法的調用參數
const token = localStorage.getItem('token')
if (to.meta.requiresAuth && !token) { // 判斷該路由是否需要登錄權限
next({
path: '/login',
query: { redirect: to.fullPath } // 將跳轉的路由path作為參數,登錄成功后跳轉到該路由
})
} else {
next()
}
})

Vue提供了三個全局導航守衛:beforeEach、beforeResolve和afterEach。它們的執行順序是順序執行,而不是管道式嵌套執行。

//全局后置鉤子
router.afterEach((to, from) =>{
// to:即將進入的目標 路由對象
// from:當前導航正要離開的路由對象
})

在使用全局導航守衛時,需要注意以下幾點:

1. 必須調用next()方法,否則路由不會正確執行。如果在路由守衛中沒有調用next()方法,路由就會停止,并且視圖不會被渲染。

2. 如果在路由守衛中調用了next(false),則整個路由導航就會被取消。例如,如果用戶嘗試訪問一個不允許的路由,可以使用next(false)取消路由導航。

3. 如果在路由守衛中調用了next('/'),則路由會重定向到'/'路徑。

4. 可以在路由守衛中使用next(vm =>{...})來訪問實例。這種方式允許我們修改組建實例的一些屬性或執行方法。

總之,全局導航守衛是Vue中非常重要的一個功能,它允許我們在路由切換之前執行自定義邏輯,保證路由的正確執行,并提高用戶體驗。