在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子
有的時(shí)候我們可能有這樣的需求,比如現(xiàn)在url為m.taoyuewenhua.com/#/ 我們需要在用戶每次跳轉(zhuǎn)路由的時(shí)候監(jiān)控有沒有abc這個(gè)參數(shù). 如果有,后端要求我們?cè)谝院筇D(zhuǎn)任何url的時(shí)候,都要在url攜帶上這個(gè)參數(shù).就變成m.taoyuewenhua.com/#/&abc=xxx;
這個(gè)參數(shù)稱為"公共參數(shù)";
那么,我們?cè)撊绾巫瞿??因?yàn)関ue中有很多組件.在每個(gè)組件都寫的話,太麻煩.所以這個(gè)時(shí)候,全局路由鉤子登場(chǎng)了.分別是
router.beforeEach 全局導(dǎo)航前置守衛(wèi) 路由跳轉(zhuǎn)前執(zhí)行
router.beforeResolve 全局導(dǎo)航解析守衛(wèi) vue2.5新增 導(dǎo)航被確認(rèn)之前,同時(shí)在所有組件內(nèi)守衛(wèi)和異步路由組件被解析之后, 解析守衛(wèi)就被調(diào)用
router.afterEach 全局導(dǎo)航后置守衛(wèi) 路由跳轉(zhuǎn)后執(zhí)行
我們此次用到的是前置守衛(wèi).開始我用的是后置守衛(wèi).因?yàn)槌霈F(xiàn)bug,也可能是本人技術(shù)不精.后又改為前置守衛(wèi).
代碼如下:
router.beforeEach((to, from, next) => { if (to.query.abc) { next(); return; }; if (from.query.abc) { let toQuery = JSON.parse(JSON.stringify(to.query)); toQuery.abc = from.query.abc; next({ path: to.path, query: toQuery }) } else { next() } });
在這里解釋一下: 前置守衛(wèi)一定記得執(zhí)行next方法.如果不執(zhí)行,路由不會(huì)跳轉(zhuǎn).路由在跳轉(zhuǎn)的時(shí)候,如果我們輸出from和to.他們分別代表上一個(gè)路由和現(xiàn)在的路由.假如我們要從a調(diào)到b;也就是跳轉(zhuǎn)的時(shí)候,我們馬上獲取b路由地址.并且判斷此時(shí)b路由有沒有abc這個(gè)參數(shù).如果有就直接跳轉(zhuǎn)過去,next方法執(zhí)行.并且return;如果沒有,然后如果a這個(gè)url有abc這個(gè)參數(shù)了,那么我們就把這個(gè)參數(shù)放到b的url上;并且next方法執(zhí)行.攜帶上這個(gè)參數(shù)就行了. 最后,如果a沒有這個(gè)參數(shù) ,直接next方法執(zhí)行.也就是說路由直接跳轉(zhuǎn)過去,不做任何攔截。
還有一點(diǎn)需要提醒初學(xué)者.初學(xué)者剛用路由鉤子容易遇到死循環(huán).建議好好看一下路由鉤子的執(zhí)行機(jī)制.就不會(huì)遇到死循環(huán)了.有時(shí)間了說一下這個(gè)問題.
以上這篇在vue中利用全局路由鉤子給url統(tǒng)一添加公共參數(shù)的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Vue-scroller頁面input框不能觸發(fā)滑動(dòng)的問題及解決方法
這篇文章主要介紹了使用Vue-scroller頁面input框不能觸發(fā)滑動(dòng)的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Vue+Webpack完美整合富文本編輯器TinyMce的方法
這篇文章主要介紹了Vue+Webpack完美整合富文本編輯器TinyMce的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11解決VUE中document.body.scrollTop為0的問題
今天小編就為大家分享一篇解決VUE中document.body.scrollTop為0的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09一文詳解vue各種權(quán)限控制與管理實(shí)現(xiàn)思路
這篇文章主要為大家介紹了vue各種權(quán)限控制與管理的實(shí)現(xiàn)思路詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Vue插槽slot詳細(xì)介紹(對(duì)比版本變化,避免踩坑)
Vue中的Slot對(duì)于編寫可復(fù)用可擴(kuò)展的組件是再合適不過了,下面這篇文章主要給大家介紹了關(guān)于Vue插槽slot詳細(xì)介紹的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06