關於 vue3 中刪除 $on/$once/$off API 後的替代方案

推薦一個倉庫。地址:https://github.com/tangdaohai...html

在 vue3 版本中刪除了 $on/$once/$off API (see),不過不用擔憂,能夠使用此倉庫做爲替代方案,繼續使用 event bus 的方式來實現跨組件的通訊功能,而且不用手動去 $off 事件回調。vue

vue-happy-bus是一款基於vue3實現的訂閱/發佈插件。git

在 vue 中,咱們能夠使用 event bus 來實現 跨組件間通訊。但一個弊端就是,這種方式並不會自動銷燬,因此爲了不回調函數重複執行,還要在 onUnmounted 中去移除回調函數。github

這樣帶來的冗餘代碼就是:api

  1. $on 的回調函數必須是具名函數。不能簡單的 $on('event name', () => {}) 使用匿名函數做爲回調,由於這樣沒法銷燬事件監聽,因此通常採用 具名函數 做爲回調
  2. onUnmounted生命週期中去銷燬事件的監聽。

我只是想在某個路由中監聽下 header 中一個按鈕的點擊事件而已,居然要這麼麻煩???app

因此此輪子被造出來了 。ide

它主要解決在誇組件間通訊時,避免重複綁定事件、沒法自動銷燬的而致使回調函數被執行屢次的問題。函數

總得來講他是能讓你偷懶少寫代碼的工具。工具

詳細使用文檔見此處),不過不用擔憂,能夠使用此倉庫做爲替代方案,繼續使用 event bus 的方式來實現跨組件的通訊功能,而且不用手動去 $off 事件回調。ui

vue-happy-bus是一款基於vue3實現的訂閱/發佈插件。

在 vue 中,咱們能夠使用 event bus 來實現 跨組件間通訊。但一個弊端就是,這種方式並不會自動銷燬,因此爲了不回調函數重複執行,還要在 onUnmounted 中去移除回調函數。

這樣帶來的冗餘代碼就是:

  1. $on 的回調函數必須是具名函數。不能簡單的 $on('event name', () => {}) 使用匿名函數做爲回調,由於這樣沒法銷燬事件監聽,因此通常採用 具名函數 做爲回調
  2. onUnmounted生命週期中去銷燬事件的監聽。

我只是想在某個路由中監聽下 header 中一個按鈕的點擊事件而已,居然要這麼麻煩???

因此此輪子被造出來了 。

它主要解決在誇組件間通訊時,避免重複綁定事件、沒法自動銷燬的而致使回調函數被執行屢次的問題。

總得來講他是能讓你偷懶少寫代碼的工具。

詳細使用文檔見此處

相關文章
相關標籤/搜索