基于Vue2.X的路由和鉤子函數(shù)詳解
最近上班有些忙,好久沒(méi)有更新文章,也沒(méi)學(xué)習(xí)新的東西。
今天來(lái)說(shuō)說(shuō)這個(gè)路由鉤子吧。
導(dǎo)航和鉤子函數(shù):
導(dǎo)航:路由正在發(fā)生改變 關(guān)鍵字:路由 變
鉤子函數(shù):在路由切換的不同階段調(diào)用不同的節(jié)點(diǎn)函數(shù)(鉤子函數(shù)在我看來(lái)也就是:某個(gè)節(jié)點(diǎn)和時(shí)機(jī)觸發(fā)的函數(shù))。
鉤子函數(shù) 主要用來(lái)攔截導(dǎo)航,讓它完成跳轉(zhuǎn)或取消,在導(dǎo)航的不同階段來(lái)執(zhí)行不同的函數(shù) ,最后鉤子函數(shù)的執(zhí)行結(jié)果會(huì)告訴導(dǎo)航怎么做。。
導(dǎo)航在所有鉤子 resolve 完之前一直處于 等待中,等待鉤子函數(shù)告訴它下一步該怎么做。用next()來(lái)指定。
我來(lái)給大家舉個(gè)登陸的例子
router.beforeEach(({meta, path}, from, next) => { const {auth = true} = meta // meta代表的是to中的meta對(duì)象,path代表的是to中的path對(duì)象 var isLogin = Boolean(store.state.user.id) // true用戶已登錄, false用戶未登錄 if (auth && !isLogin && path !== '/login') { // auth 代表需要通過(guò)用戶身份驗(yàn)證,默認(rèn)為true,代表需要被驗(yàn)證, false為不用檢驗(yàn) return next({ path: '/login' }) // 跳轉(zhuǎn)到login頁(yè)面 } next() // 進(jìn)行下一個(gè)鉤子函數(shù) })
先說(shuō)這個(gè)beforeEach的鉤子函數(shù),它是一個(gè)全局的before 鉤子函數(shù), (before each)意思是在 每次每一個(gè)路由改變的時(shí)候都得執(zhí)行一遍。
它的三個(gè)參數(shù):
to: (Route路由對(duì)象) 即將要進(jìn)入的目標(biāo) 路由對(duì)象 to對(duì)象下面的屬性: path params query hash fullPath matched name meta(在matched下,但是本例可以直接用)
from: (Route路由對(duì)象) 當(dāng)前導(dǎo)航正要離開的路由
next: (Function函數(shù)) 一定要調(diào)用該方法來(lái) resolve 這個(gè)鉤子。 調(diào)用方法:next(參數(shù)或者空) ***必須調(diào)用
next(無(wú)參數(shù)的時(shí)候): 進(jìn)行管道中的下一個(gè)鉤子,如果走到最后一個(gè)鉤子函數(shù),那么 導(dǎo)航的狀態(tài)就是 confirmed (確認(rèn)的)
next('/') 或者 next({ path: '/' }): 跳轉(zhuǎn)到一個(gè)不同的地址。當(dāng)前的導(dǎo)航被中斷,然后進(jìn)行一個(gè)新的導(dǎo)航。
全局鉤子函數(shù)之 全局的afterEach鉤子:
after 鉤子沒(méi)有 next 方法,不能改變導(dǎo)航,代表已經(jīng)確定好了導(dǎo)航怎么去執(zhí)行后,附帶的一個(gè)執(zhí)行鉤子函數(shù)
組件內(nèi)的鉤子函數(shù):( beforeRouteEnter 和 beforeRouteLeave 再加一個(gè) watch函數(shù) )
vue2.X的組件內(nèi)鉤子函數(shù)比vue1.X減少了許多。。
使用組件自身的生命周期鉤子函數(shù)來(lái)替代 activate 和 deactivate
在 $router 上使用 watcher 來(lái)響應(yīng)路由改變
canActivate 可以被 router 的配置中的 beforeEnter 中實(shí)現(xiàn)
canDeactivate 已經(jīng)被 beforeRouteLeave 取代, 后者在一個(gè)組件的根級(jí)定義中指定。這個(gè)鉤子函數(shù)在調(diào)用時(shí)是將組件的實(shí)例作為其上下文的。
canReuse 已經(jīng)被移除,因其容易混淆且很少被用到。
用ajax獲取數(shù)據(jù)的data(to, from, next) 鉤子用組件內(nèi) beforeRouteEnter (to, from, next)來(lái)替代
以上這篇基于Vue2.X的路由和鉤子函數(shù)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 詳解Vue路由鉤子及應(yīng)用場(chǎng)景(小結(jié))
- 在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子
- Vue的路由及路由鉤子函數(shù)的實(shí)現(xiàn)
- 詳解VueRouter進(jìn)階之導(dǎo)航鉤子和路由元信息
- Vue使用路由鉤子攔截器beforeEach和afterEach監(jiān)聽路由
- vue-router鉤子函數(shù)實(shí)現(xiàn)路由守衛(wèi)
- Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解
- vue-router之路由鉤子函數(shù)應(yīng)用小結(jié)
- Vue Router組件內(nèi)路由鉤子的使用
相關(guān)文章
Vue draggable實(shí)現(xiàn)從左到右拖拽功能
這篇文章主要為大家詳細(xì)介紹了Vue draggable實(shí)現(xiàn)從左到右拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04vue在data中定義變量后依舊報(bào)undefined的解決
這篇文章主要介紹了vue在data中定義變量后依舊報(bào)undefined的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue可視化大屏實(shí)現(xiàn)無(wú)線滾動(dòng)列表飛入效果
本文主要介紹了vue可視化大屏實(shí)現(xiàn)無(wú)線滾動(dòng)列表飛入效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04vue中利用three.js實(shí)現(xiàn)全景圖的完整示例
這篇文章主要給大家介紹了關(guān)于vue中利用three.js實(shí)現(xiàn)全景圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12vue項(xiàng)目中引入noVNC遠(yuǎn)程桌面的方法
下面小編就為大家分享一篇vue項(xiàng)目中引入noVNC遠(yuǎn)程桌面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03