vue監(jiān)聽路由變化的幾種方式小結
更新時間:2022年05月26日 09:22:13 作者:star-1331
這篇文章主要介紹了vue監(jiān)聽路由變化的幾種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
監(jiān)聽路由變化的幾種方式小結
vue頁面開發(fā)中,我們經常需要根據路由的變化去實現一些操作,那么如何監(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)聽路由參數的變化?
當使用路由參數時,例如從 /user/foo 導航到 /user/bar,原來的組件實例會被復用。
因為兩個路由都渲染同個組件,比起銷毀再創(chuàng)建,復用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會再被調用。
那如果我們要在組件中監(jiān)聽路由參數的變化,就只能通過watch (監(jiān)測變化) $route 對象,或使用 beforeRouteUpdate 的組件內守衛(wèi)。
方式一: 監(jiān)聽 $route
const User = {
? template: '...',
? watch: {
? ? $route(to, from) {
? ? ? // 對路由變化作出響應...
? ? }
? }
}方式二:通過組件內的導航守衛(wèi)
beforeRouteUpdate ,(和created(){}生命周期函數同級別)
const User = {
? template: '...',
? beforeRouteUpdate(to, from, next) {
? ? // react to route changes...
? ? // don't forget to call next()
? }
}以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

