下面我就為大家分享一篇基於Vue2.X的路由和鉤子函數詳解,具有很好的參考價值,希望對大家有幫助。
最近上班有些忙,好久沒有更新文章,也沒學習新的東西。
今天就來說這個路由鉤子吧。
導航和鉤子函數:
導航:路由正在改變關鍵字:路由變
鉤子函數:在路由切換的不同階段呼叫不同的節點函數(鉤子函數在我看來也就是:某個節點和時機觸發的函數)。
鉤子函數 主要用來攔截導航,讓它完成跳轉或取消,在導航的不同階段來執行不同的函數 ,最後鉤子函數的執行結果會告訴導航怎麼做。 。
導航在所有鉤子 resolve 完之前一直處於 等待中,等待鉤子函數告訴它下一步該怎麼做。用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() // 进行下一个钩子函数 })
先說這個beforeEach的鉤子函數,它是一個全域的before 鉤子函數, (before each)意思是在每次每一個路由改變的時候都得執行一遍。
它的三個參數:
to: (Route路由物件) 即將要進入的目標路由對象to物件下面的屬性: path params query hash fullPath matched name meta(在matched下,但本例可以直接用)
from: (Route路由物件) 目前導航正要離開的路由
next: (Function函數) 一定要呼叫該方法來resolve 這個鉤子。呼叫方法:next(參數或空) ***必須呼叫
next(無參數的時候): 進行管道中的下一個鉤子,如果走到最後一個鉤子函數,那麼導航的狀態就是confirmed (確認的)
next('/') 或next({ path: '/' }): 跳到一個不同的位址。目前的導航被中斷,然後進行一個新的導航。
全域鉤子函數之全域的afterEach鉤子:
after 鉤子沒有next 方法,不能改變導航,代表已經確定好了導航怎麼去執行後,附帶的一個執行鉤子函數
元件內的鉤子函數:( beforeRouteEnter 和beforeRouteLeave 再加一個watch函數)
#vue2.X的元件內鉤子函數比vue1.X減少了許多。 。
使用元件本身的生命週期鉤子函數來取代activate 和deactivate
在$router 上使用watcher 來回應路由變更
canActivate 可以被router 的設定中的beforeEnter中實作
canDeactivate 已經被beforeRouteLeave 取代, 後者在一個元件的根級定義中指定。這個鉤子函數在呼叫時是將元件的實例作為其上下文的。
canReuse 已被移除,因其容易混淆且很少被用到。
用ajax取得資料的data(to, from, next) 鉤子用元件內beforeRouteEnter (to, from, next)來取代
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
以上是在Vue2.X中使用路由和鉤子函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!