Vue提供了許多鉤子函數,其中之一是beforeLeave,它在離開路由前觸發。
該鉤子函數可以用來檢查用戶是否想離開當前頁面,如果想離開,則可以執行一些操作,例如保存表單數據。
beforeRouteLeave (to, from, next) {
const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
if (answer) {
next()
} else {
next(false)
}
}
在上面的代碼中,我們檢查當前是否有未保存的更改,如果有,則提示用戶是否真的要離開,如果用戶選擇了“確定”,則執行next(),讓用戶離開當前路由,否則執行next(false),路由不會改變。
需要注意的是,beforeLeave鉤子只對離開當前路由時生效,對于跳轉到同一個路由的情況,該鉤子函數是不會被觸發的。