Vue-Router 是Vue.js官方的路由管理工具。
在 Vue 中使用路由時,我們可以利用鉤子函數來對路由進行操作,鉤子函數分為三類:全局前置守衛、路由獨享守衛和組件內的守衛。
全局前置守衛是指在進入路由前觸發的鉤子函數。可以用來驗證用戶是否登錄、確認操作、加載動態路由等。可以通過以下方式向Vue-Router添加全局守衛:
router.beforeEach((to, from, next) =>{
// ...
next()
})
路由獨享守衛是指在某個路由進入時觸發的鉤子函數。可以用來隔離路由,攔截未授權用戶等。可以通過以下方式向路由添加獨享守衛:
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) =>{
// ...
next()
}
}
]
})
組件內的守衛是指在進入、離開、更新組件時觸發的鉤子函數。可以用來檢測組件數據或路由是否變化,而對原有組件進行響應的處理等。以下是組件內的守衛鉤子函數:
beforeRouteEnter (to, from, next) {},
beforeRouteUpdate (to, from, next) {},
beforeRouteLeave (to, from, next) {}
beforeRouteEnter 是在路由進入組件前觸發的鉤子函數,所以在此時無法獲取組件實例,但可以通過回調函數訪問到渲染該組件的視圖。
beforeRouteUpdate 只有在組件路由變化時才會被調用,可以在組件路由發生變化前檢測路由參數的變化情況并作出響應。
beforeRouteLeave 是在離開組件時觸發的鉤子函數,可以用來防止用戶誤操作或離開保存當前組件數據等。
鉤子函數的執行順序為:全局前置守衛 =>路由獨享守衛 =>組件內的守衛。
以上是Vue-Router 的鉤子函數介紹,利用這些鉤子函數可以有效地對路由進行操作。