最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue采用EventBus實現(xiàn)跨組件通信及注意事項小結(jié)

 更新時間:2018年06月14日 16:16:03   作者:菠蘿油王子  
EventBus是一種發(fā)布/訂閱事件設(shè)計模式的實踐。這篇文章主要介紹了vue采用EventBus實現(xiàn)跨組件通信及注意事項,需要的朋友可以參考下

EventBus

EventBus是一種發(fā)布/訂閱事件設(shè)計模式的實踐。

在vue中適用于跨組件簡單通信,不適應(yīng)用于復雜場景多組件高頻率通信,類似購物車等場景狀態(tài)管理建議采用vuex。

掛載EventBus到vue.prototype

添加bus.js文件

//src/service/bus.js
export default (Vue) => {
 const eventHub = new Vue()
 Vue.prototype.$bus = {
 /**
  * @param {any} event 第一個參數(shù)是事件對象,第二個參數(shù)是接收到消息信息,可以是任意類型
  * @method $on 事件訂閱, 監(jiān)聽當前實例上的自定義事件。https://cn.vuejs.org/v2/api/#vm-on
  * @method $off 取消事件訂閱,移除自定義事件監(jiān)聽器。 https://cn.vuejs.org/v2/api/#vm-off https://github.com/vuejs/vue/issues/3399
  * @method $emit 事件廣播, 觸發(fā)當前實例上的事件。 https://cn.vuejs.org/v2/api/#vm-emit
  * @method $once 事件訂閱, 監(jiān)聽一個自定義事件,但是只觸發(fā)一次,在第一次觸發(fā)之后移除監(jiān)聽器。 https://cn.vuejs.org/v2/api/#vm-once
  */
  $on (...event) {
   eventHub.$on(...event)
  },
  $off (...event) {
   eventHub.$off(...event)
  },
  $once (...event) {
   eventHub.$emit(...event)
  },
  $emit (...event) {
   eventHub.$emit(...event)
  }
 }
}
注冊
//main.js
import BUS from './service/bus'
BUS(Vue)

注意事項

  1. 事件訂閱必須在事件廣播前注冊;
  2. 取消事件訂閱必須跟事件訂閱成對出現(xiàn)。

使用場景

1.跨路由組件使用eventbus通信

假設(shè)a路由跳轉(zhuǎn)b路由需要通過eventbus通信,先觀察路由跳轉(zhuǎn)前后a,b組件的生命周期鉤子函數(shù),可以發(fā)現(xiàn)兩者是交叉執(zhí)行的。

由于事件訂閱必須在事件廣播前注冊,所以事件訂閱可以放在b組件beforeCreate,created,beforeMout鉤子函數(shù)中,而事件廣播可以放在a組件的beforeDestroy,destroyed中。

取消事件訂閱必須跟事件訂閱成對出現(xiàn),否則會重復訂閱,對javascript性能造成不必要的浪費。因此B組件銷毀前需取消當前事件訂閱。

A組件

  beforeDestroy () {
  //事件廣播
   this.$bus.$emit('testing', color)
  }

B組件

  created () {
  //事件訂閱
   this.$bus.$on('testing', (res) => { console.log(res) })
  },
  beforeDestroy () {
   this.$bus.$off('testing')
  }

2.普通跨組件通信:由于兩組件幾乎同時加載,因此建議事件廣播放在created鉤子內(nèi),事件訂閱放在mouted中即可。具體使用場景建議在兩組件分別打印生命鉤子函數(shù)進行準確判斷。

 beforeCreate: function () {
  console.group('A組件 beforeCreate 創(chuàng)建前狀態(tài)===============》')
 },
 created: function () {
  console.group('A組件 created 創(chuàng)建完畢狀態(tài)===============》')
 },
 beforeMount: function () {
  console.group('x組件 beforeMount 掛載前狀態(tài)===============》')
 },
 mounted: function () {
  console.group('x組件 mounted 掛載結(jié)束狀態(tài)===============》')
 },
 beforeUpdate: function () {
  console.group('x組件 beforeUpdate 更新前狀態(tài)===============》')
 },
 updated: function () {
  console.group('x組件 updated 更新完成狀態(tài)===============》')
 },
 beforeDestroy: function () {
  console.group('x組件 beforeDestroy 銷毀前狀態(tài)===============》')
 },
 destroyed: function () {
  console.group('x組件 destroyed 銷毀完成狀態(tài)===============》')
 }

總結(jié)

以上所述是小編給大家介紹的vue采用EventBus實現(xiàn)跨組件通信及注意事項小結(jié),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue分頁查詢怎么實現(xiàn)

    Vue分頁查詢怎么實現(xiàn)

    這篇文章主要介紹了Vue分頁查詢怎么實現(xiàn),使用vue實現(xiàn)分頁的邏輯并不復雜,接收后端傳輸過來的數(shù)據(jù),然后根據(jù)數(shù)據(jù)的總數(shù)和每一頁的數(shù)據(jù)量就可以計算出一共可以分成幾頁
    2023-04-04
  • vue觸發(fā)真實的點擊事件跟用戶行為一致問題

    vue觸發(fā)真實的點擊事件跟用戶行為一致問題

    這篇文章主要介紹了vue觸發(fā)真實的點擊事件跟用戶行為一致問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中全局變量的定義和使用

    Vue中全局變量的定義和使用

    這篇文章主要介紹了vue中全局變量的定義和使用,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • vite如何構(gòu)建vue3項目

    vite如何構(gòu)建vue3項目

    本文介紹了如何使用Vite快速搭建Vue項目,強調(diào)Vite對Node.js版本有最低要求(>=12.0.0),提供了環(huán)境準備、安裝步驟和啟動指南,旨在幫助開發(fā)者高效啟動Vue項目
    2024-10-10
  • vue中的循環(huán)對象屬性和屬性值用法

    vue中的循環(huán)對象屬性和屬性值用法

    這篇文章主要介紹了vue中的循環(huán)對象屬性和屬性值用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue移動端實現(xiàn)紅包雨效果

    vue移動端實現(xiàn)紅包雨效果

    這篇文章主要為大家詳細介紹了vue移動端實現(xiàn)紅包雨效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • vue3中的對象時為proxy對象如何獲取值(兩種方式)

    vue3中的對象時為proxy對象如何獲取值(兩種方式)

    使用vue3.0時,因為底層是使用proxy進行代理的所以當我們打印一些值得時候是proxy代理之后的是Proxy<BR>對象,Proxy對象里邊的[[Target]]才是真實的對象,那么如何獲取這個值呢,下面下面給大家介紹兩種方式,感興趣的朋友一起看看吧
    2023-01-01
  • vue使用 better-scroll的參數(shù)和方法詳解

    vue使用 better-scroll的參數(shù)和方法詳解

    這篇文章主要介紹了vue使用 better-scroll的參數(shù)和方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue中保存用戶登錄狀態(tài)實例代碼

    Vue中保存用戶登錄狀態(tài)實例代碼

    本篇文章主要介紹了Vue中保存用戶登錄狀態(tài)實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。、
    2017-06-06
  • vue中多個倒計時實現(xiàn)代碼實例

    vue中多個倒計時實現(xiàn)代碼實例

    這篇文章主要介紹了vue中多個倒計時實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03

最新評論

平凉市| 白朗县| 和龙市| 岳普湖县| 连城县| 阜宁县| 东兴市| 徐水县| 鄂托克旗| 阿鲁科尔沁旗| 武乡县| 江源县| 翼城县| 星座| 阿合奇县| 大新县| 焦作市| 望江县| 樟树市| 山阴县| 象州县| 永康市| 沙雅县| 嘉鱼县| 任丘市| 崇左市| 健康| 兴业县| 遂昌县| 达日县| 枣庄市| 台南市| 汝阳县| 五峰| 集贤县| 隆德县| 遂川县| 九龙城区| 金湖县| 南木林县| 右玉县|