vue監(jiān)聽路由變化的幾種方式小結
監(jiān)聽路由變化的幾種方式小結
vue頁面開發(fā)中,我們經(jīng)常需要根據(jù)路由的變化去實現(xiàn)一些操作,那么如何監(jiān)聽路由的變化呢?當然是利用VUE中的watch,請看代碼。
一、監(jiān)聽路由從哪兒來到哪兒去
watch:{ ?? ?$route(to,from){ ?? ? ?console.log(from.path);//從哪來 ?? ? ?console.log(to.path);//到哪去 ?? ?} }
二、監(jiān)聽路由變化獲取新老路由信息
?watch:{ ? ? $route:{ ? ? ? handler(val,oldval){ ? ? ? ? console.log(val);//新路由信息 ? ? ? ? console.log(oldval);//老路由信息 ? ? ? }, ? ? ? // 深度觀察監(jiān)聽 ? ? ? deep: true ? ? } ? }
三、監(jiān)聽路由變化觸發(fā)方法
methods:{ ? getPath(){ ? ? console.log(1111) ? } }, watch:{ ? '$route':'getPath' }
四、全局監(jiān)聽路由
在app.vue的create種加入下面代碼,然后進行判斷
this.$router.beforeEach((to, from, next) => { ? ? console.log(to); ? ? next(); });
如何在組件中監(jiān)聽路由參數(shù)的變化?
當使用路由參數(shù)時,例如從 /user/foo 導航到 /user/bar,原來的組件實例會被復用。
因為兩個路由都渲染同個組件,比起銷毀再創(chuàng)建,復用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會再被調(diào)用。
那如果我們要在組件中監(jiān)聽路由參數(shù)的變化,就只能通過watch (監(jiān)測變化) $route 對象,或使用 beforeRouteUpdate 的組件內(nèi)守衛(wèi)。
方式一: 監(jiān)聽 $route
const User = { ? template: '...', ? watch: { ? ? $route(to, from) { ? ? ? // 對路由變化作出響應... ? ? } ? } }
方式二:通過組件內(nèi)的導航守衛(wèi)
beforeRouteUpdate ,(和created(){}生命周期函數(shù)同級別)
const User = { ? template: '...', ? beforeRouteUpdate(to, from, next) { ? ? // react to route changes... ? ? // don't forget to call next() ? } }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決vue 使用axios.all()方法發(fā)起多個請求控制臺報錯的問題
這篇文章主要介紹了解決vue 使用axios.all()方法發(fā)起多個請求控制臺報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Vue首屏加載過慢出現(xiàn)白屏的6種優(yōu)化方案匯總
vue項目打包上線后,首次打開會發(fā)現(xiàn)加載很慢,出現(xiàn)白屏的問題,下面這篇文章主要給大家介紹了關于Vue首屏加載過慢出現(xiàn)白屏的6種優(yōu)化方案,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-02-02