Vue Router 提供了一些鉤子函數,使得我們可以在路由的生命周期中執行一些操作,比如監測路由的變化,驗證用戶權限等。
常用的鉤子函數有 beforeRouteEnter、beforeRouteUpdate 和 beforeRouteLeave。
beforeRouteEnter 鉤子函數是在進入路由之前執行的,如果需要獲取組件實例,需要使用 next 函數中傳入一個回調函數,在回調函數中訪問組件實例:
beforeRouteEnter(to, from, next) { next(vm =>{ console.log(vm) }) }
beforeRouteUpdate 鉤子函數是在路由變化后但是仍然在同一個組件中時執行的,例如從 /user/1 編輯用戶信息后,更新到 /user/2 時。只需要在組件中實現 beforeRouteUpdate 函數即可:
beforeRouteUpdate(to, from, next) { console.log('route updated') next() }
beforeRouteLeave 鉤子函數是在離開當前路由時執行的,如果需要進行一些操作,比如提示用戶保存未保存的內容,可以在這個鉤子函數中實現:
beforeRouteLeave(to, from, next) { if (this.isEdited) { if (confirm('您有未保存的更改,確認離開?')) { next() } else { next(false) } } else { next() } }