最近專案中由於列表居多且都做了下拉重新整理上拉載入,所以就使用了keep-alive元件來快取頁面資料,但是當在其他頁面做一些操作改變了列表資料,當來到列表的時候每次都要下拉重新整理一下,體驗不好,所以就使用到了eventbus,在需要更新的時候就用eventbus來重新整理列表。
eventbus用於實現元件之間的資料通訊,使用起來非常之簡單。只需要在main.js中加入以下**:
vue.prototype.$eventbus = new vue();
複製**
上面**就建立了乙個全域性eventbus,其實就是乙個vue例項。
這樣我們就可以在各個頁面中使用了。
在頁面中使用$emit
方法就可以觸發事件,然後元件中使用$on
方法就可以監聽對應事件,這個和元件之間傳值是一樣的。不過這個可以在非父子元件中傳遞狀態,和vuex差不多。當然這種方法在簡單應用中可以使用,複雜的應用應該使用vuex
,這樣方便管理和維護。
this.$eventbus.$emit('msg',data);// 觸發事件
this.$eventbus.$on('msg',(data)=>{}) // 監聽事件
複製**
這兩個我感覺很配,當我們使用keep-alive快取了頁面元件,我們需要在a面來觸發b頁面的列表重新整理或其他方法時,這時候使用eventbus就非常方便,其他方法也可以,比如說使用vuex,但是此時就沒有直接使用eventbus方便快捷了。 當我們在頁面中使用了this.$eventbus.$on
去監聽乙個事件,只要頁面被快取,就可以監聽到其他頁面觸發的事件。這樣我們就可以減少一些不必要的請求,而且在需要更新的時候去更新,也可以做一些其他的操作,簡直美滋滋。
第一次發布文章,只是想和大家做乙個交流,不足的地方還請大神多多指點。
vue中keep alive的使用
1.beforecreate 2.created 3.beforemount 4.mounted 5.beforeupdate 6.updated 7.beforedestory 8.destroyed 9.errorcaptured 當捕獲乙個來自子孫元件的錯誤時被呼叫。此鉤子會收到三個引數 錯誤...
vue中keep alive的使用
keep alive 是 vue 的內建元件,當它包裹動態元件時,會快取不活動的元件例項,而不是銷毀它們。和 transition 相似,keep alive 是乙個抽象元件 它自身不會渲染成乙個 dom 元素,也不會出現在父元件鏈中。在元件切換過程中將狀態保留在記憶體中,防止重複渲染dom,減少載...
vue的keep alive缺陷提問?
請問,當有頁面需要快取時,如何實現?例如 a是首頁,b是列表頁,c是詳情頁 a b,b c 頁面被快取 c b,頁面展示的是b頁面之前狀態 b a,a b,如果走了外層的router view,正常顯示 div id keep alive router view v if route.meta.ke...