您好,登錄后才能下訂單哦!
本篇內容主要講解“vue路由監聽事件跳轉的問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue路由監聽事件跳轉的問題怎么解決”吧!
watch: { $route: function clearSelectionRow() { console.log("success"); this.$emit("setSelectionFile", []); }, }
代碼實現功能:當本頁面路由發生變化的時候,執行回調函數clearSelectionRow();
①$route后接函數,函數可以是現定義的,也可以是在methods方法中已經定義完成的;
②監聽watch封裝在最底層的組件的時候,注意跳轉后該組件是否摧毀重建;如果被摧毀重建,路由監聽觸發事件將不執行,摧毀重建:一個組件調用兩次分別顯示,在頁面上無區別,但是是同意組件的再次渲染,定義在該組件上的路由變化將監聽不到。
解決方法:將路由監聽放在一直不變的主頁面index.vue上.
③當需要在同一屬性下執行多個回調函數的時候,將函數以對象的形式放在數組中
$route: [ function clearSelectionRow() { //回調函數1 this.$emit("setSelectionFile", []); }, {//回調函數2 handler(route) { }, ],
最近在使用vue項目的時候發現我們使用的watch監聽不到$route的變化,查了很多文檔最終終于找到解決辦法。
路由包含子路由
{ name: 'home', component: Home, path: '/home', children: [ { path: 'main', name: 'main', component: Main, }, { path: 'login', name: 'login', component: Login, }, ] }
在幾個子路由之間跳轉就能保證監聽到路由變化
監聽$route.path對象
watch: { "$route.path":{ handler(to, from) { console.log('to:::', to); console.log('from:::', from); }, deep: true } }
如果我們的路由沒有子路由,想要實現監聽可以使用$route.path進行深度監聽,這樣也能監聽到路由變化了。
使用vue自帶的路由守衛beforeRouteEnter ,beforeRouteUpdate ,beforeRouteLeave
beforeRouteEnter (to, from, next) { next(vm => { // 通過 `vm` 訪問組件實例 }) }, beforeRouteUpdate (to, from, next) { }, beforeRouteLeave (to, from, next) { }
到此,相信大家對“vue路由監聽事件跳轉的問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。