Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解
vue2.x
前置概念:
路由鉤子分類
一共分3類, 7個(gè)鉤子

路由和組件的概念(方便理解鉤子函數(shù))
路由和組件是2個(gè)概念, 可以粗獷的認(rèn)為:
- 路由是瀏覽器網(wǎng)址
- 組件是顯示在網(wǎng)頁(yè)上的不同內(nèi)容
全局路由鉤子
router.beforeEach(to, from, next){ } 前置導(dǎo)航守衛(wèi)
路由進(jìn)入前
router.afterEach(to, from, next){ } 后置導(dǎo)航守衛(wèi)
路由進(jìn)入后
router.beforeResolve(to, from, next){ } 解析守衛(wèi)
解析組件時(shí), 已經(jīng)讀取所有配置, 前面的關(guān)卡都通過(guò)了, 準(zhǔn)備解析組件前執(zhí)行
路由配置守衛(wèi)鉤子
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-iNt9TxY9-1631622860323)(C:\Users\hwm\AppData\Roaming\Typora\typora-user-images\image-20210914193901604.png)]](http://img.jbzj.com/file_images/article/202109/2021092409321712.png)
beforeEnter() 在讀取路由配置信息前調(diào)用
在beforeCreate()前執(zhí)行
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) => { }
}
]
})
組件內(nèi)的守衛(wèi)鉤子
beforeRouteEnter(to, from, next){ } 進(jìn)入組件前
默認(rèn)不能獲取組件實(shí)例 this
但是以下辦法可以訪問(wèn)
beforeRouteEnter(to, from, next){
// next()的回調(diào)函數(shù),在進(jìn)入路由,實(shí)例化執(zhí)行
next(vm => {
// vm等價(jià)于當(dāng)前組件this
})
}
beforeRouteUpdate(to, from, next){ } 修改組件前
當(dāng)前組件依然在使用路由地址改變滿足以上2個(gè)條件才會(huì)執(zhí)行
beforeRouteLeave(to, from, next){ } 離開組件前
路由鉤子執(zhí)行順序
eg: 從A組件跳轉(zhuǎn)到B組件順序
beforeRouteLeave() 先離開A組件
beforeEach() 全局-前置導(dǎo)航守衛(wèi)
beforeEnter() 讀取路由配置信息前 (讀取B路由信息)
beforeRouteEnter() 進(jìn)入組件前
beforeResolve() 解析守衛(wèi)
afterEach() 全局-后置導(dǎo)航守衛(wèi)
如果B路有更新, 每次都會(huì)執(zhí)行以下三個(gè)鉤子:
beforeEach() 全局 - 前置導(dǎo)航守衛(wèi)
beforeResolve() 全局 - 解析守衛(wèi)
beforeRouteUpdate() 組件內(nèi) - 修改組件前
vue3.x
vue3.x相對(duì)于vue2.x, 只有小部分不同, 此處只針對(duì)不同做講解
對(duì)比變化圖

區(qū)別補(bǔ)充:
- 在Vue2.x中, 有3個(gè)組件, 如果A組件跳轉(zhuǎn)到B組件, B組件中存在子組件:
B組件中的子組件不會(huì)觸發(fā)路由鉤子
- 在Vue3.x中, 有3個(gè)組件, 如果A組件跳轉(zhuǎn)到B組件, B組件中存在子組件:
B組件中的子組件會(huì)觸發(fā)路由鉤子: onBeforeRouteUpdate和onBeforeRouteLeave
B組件中的子組件不會(huì)觸發(fā)路由鉤子
- 在Vue3.x中, 有3個(gè)組件, 如果A組件跳轉(zhuǎn)到B組件, B組件中存在子組件:
B組件中的子組件會(huì)觸發(fā)路由鉤子: onBeforeRouteUpdate和onBeforeRouteLeave
以上就是Vue2.x與Vue3.x中路由鉤子的區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue2.x與Vue3.x中路由鉤子的區(qū)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 詳解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)聽路由
- 基于Vue2.X的路由和鉤子函數(shù)詳解
- vue-router鉤子函數(shù)實(shí)現(xiàn)路由守衛(wèi)
- vue-router之路由鉤子函數(shù)應(yīng)用小結(jié)
- Vue Router組件內(nèi)路由鉤子的使用
相關(guān)文章
Vue動(dòng)態(tài)組件與異步組件實(shí)例詳解
這篇文章主要介紹了Vue動(dòng)態(tài)組件與異步組件,結(jié)合實(shí)例形式分析了動(dòng)態(tài)組件與異步組件相關(guān)概念、功能及使用技巧,需要的朋友可以參考下2019-02-02
vue中使用go()和back()兩種返回上一頁(yè)的區(qū)別說(shuō)明
這篇文章主要介紹了vue中使用go()和back()兩種返回上一頁(yè)的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue實(shí)現(xiàn)左右伸縮方式(el-drawer自定義位置展開收縮)
這篇文章主要介紹了vue實(shí)現(xiàn)左右伸縮方式(el-drawer自定義位置展開收縮),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
vue使用路由技術(shù)實(shí)現(xiàn)登錄成功后跳轉(zhuǎn)到首頁(yè)
本文主要介紹了vue使用路由技術(shù)實(shí)現(xiàn)登錄成功后跳轉(zhuǎn)到首頁(yè),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
vue 3.x 中mixin封裝公用方法應(yīng)用方式
這篇文章主要介紹了vue 3.x 中mixin封裝公用方法應(yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

