基于Vue2.X的路由和鉤子函數(shù)詳解
最近上班有些忙,好久沒有更新文章,也沒學習新的東西。
今天來說說這個路由鉤子吧。
導航和鉤子函數(shù):
導航:路由正在發(fā)生改變 關鍵字:路由 變
鉤子函數(shù):在路由切換的不同階段調用不同的節(jié)點函數(shù)(鉤子函數(shù)在我看來也就是:某個節(jié)點和時機觸發(fā)的函數(shù))。
鉤子函數(shù) 主要用來攔截導航,讓它完成跳轉或取消,在導航的不同階段來執(zhí)行不同的函數(shù) ,最后鉤子函數(shù)的執(zhí)行結果會告訴導航怎么做。。
導航在所有鉤子 resolve 完之前一直處于 等待中,等待鉤子函數(shù)告訴它下一步該怎么做。用next()來指定。
我來給大家舉個登陸的例子
router.beforeEach(({meta, path}, from, next) => {
const {auth = true} = meta // meta代表的是to中的meta對象,path代表的是to中的path對象
var isLogin = Boolean(store.state.user.id) // true用戶已登錄, false用戶未登錄
if (auth && !isLogin && path !== '/login') { // auth 代表需要通過用戶身份驗證,默認為true,代表需要被驗證, false為不用檢驗
return next({ path: '/login' }) // 跳轉到login頁面
}
next() // 進行下一個鉤子函數(shù)
})
先說這個beforeEach的鉤子函數(shù),它是一個全局的before 鉤子函數(shù), (before each)意思是在 每次每一個路由改變的時候都得執(zhí)行一遍。
它的三個參數(shù):
to: (Route路由對象) 即將要進入的目標 路由對象 to對象下面的屬性: path params query hash fullPath matched name meta(在matched下,但是本例可以直接用)
from: (Route路由對象) 當前導航正要離開的路由
next: (Function函數(shù)) 一定要調用該方法來 resolve 這個鉤子。 調用方法:next(參數(shù)或者空) ***必須調用
next(無參數(shù)的時候): 進行管道中的下一個鉤子,如果走到最后一個鉤子函數(shù),那么 導航的狀態(tài)就是 confirmed (確認的)
next('/') 或者 next({ path: '/' }): 跳轉到一個不同的地址。當前的導航被中斷,然后進行一個新的導航。
全局鉤子函數(shù)之 全局的afterEach鉤子:
after 鉤子沒有 next 方法,不能改變導航,代表已經(jīng)確定好了導航怎么去執(zhí)行后,附帶的一個執(zhí)行鉤子函數(shù)
組件內的鉤子函數(shù):( beforeRouteEnter 和 beforeRouteLeave 再加一個 watch函數(shù) )
vue2.X的組件內鉤子函數(shù)比vue1.X減少了許多。。
使用組件自身的生命周期鉤子函數(shù)來替代 activate 和 deactivate
在 $router 上使用 watcher 來響應路由改變
canActivate 可以被 router 的配置中的 beforeEnter 中實現(xiàn)
canDeactivate 已經(jīng)被 beforeRouteLeave 取代, 后者在一個組件的根級定義中指定。這個鉤子函數(shù)在調用時是將組件的實例作為其上下文的。
canReuse 已經(jīng)被移除,因其容易混淆且很少被用到。
用ajax獲取數(shù)據(jù)的data(to, from, next) 鉤子用組件內 beforeRouteEnter (to, from, next)來替代
以上這篇基于Vue2.X的路由和鉤子函數(shù)詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue中利用three.js實現(xiàn)全景圖的完整示例
這篇文章主要給大家介紹了關于vue中利用three.js實現(xiàn)全景圖的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

