91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue中的eventBus怎么使用

發布時間:2022-03-07 16:28:56 來源:億速云 閱讀:287 作者:iii 欄目:開發技術

本篇內容主要講解“Vue中的eventBus怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Vue中的eventBus怎么使用”吧!

    1. 簡介

    Vue 組件中常見的有:父子組件通信、兄弟組件通信。而父子組件通信就很簡單,父組件會通過 props 向下傳數據給子組件,當子組件有事情要告訴父組件時會通過 $emit 事件告訴父組件。

    今天就來說說,如果兩個頁面沒有任何引入和被引入關系,該如何通信呢?

    如果應用程序不需要類似 Vuex 這樣的庫來處理組件之間的數據通信,就可以考慮 Vue 中的事件總線 ,即 eventBus 來通信。

    eventBus 又稱為事件總線。在 Vue 中可使用 eventBus 來作為溝通橋梁的概念,就像是所有組件共用相同的事件中心,可向該中心注冊發送事件或接收事件,所以組件都可以上下平行地通知其他組件。但也就是太方便所以若使用不慎,就會造成難以維護的“災難”,因此才需要更完善的 Vuex 作為狀態管理中心,將通知的概念上升到共享狀態層次。

    2. 使用

    可以聲明一個全局變量來使用事件中心,但如果在使用 webpack 之類的模塊系統,這顯然不合適。
    每次使用都手動 import 進來也很不方便,所以本文使用 vue-bus 插件。

    vue-bus npm地址

    vue-bus github地址

    安裝及引入

    npm install vue-bus --save

    如果在一個模塊化工程中使用它,必須要通過 Vue.use() 明確地安裝 vue-bus:

    // main.js
    import Vue from 'vue';
    import VueBus from 'vue-bus';
    Vue.use(VueBus);

    在組件中使用

    假設有兩個Vue組件需要通信 ,在 A 組件的按鈕上面綁定了點擊事件發送一則消息,想通知 B 組件。

    // A 組件
    <template>
      <div class="wrap">
        <button @click="sendMsg">觸發</button>
      </div>
    </template>
    
    <script>
    export default {
      data(){
        return {
          Amsg:'我是來自A組件的信息',
        }
      },
      methods:{
        sendMsg(){
          this.$bus.emit('changeMsg', this.Amsg );
          this.$bus.emit('doOnce','我只會觸發一次');
        }
      },
    }
    </script>
    // B 組件
    <template>
      <div>
        <h4>{{Bmsg}}</h4>
      </div>
    </template>
    
    <script>
    export default {
      data(){
        return {
          Bmsg:'我是B組件',
        }
      },
      methods:{
        getMsg(msg){
          this.Bmsg = msg;
          console.log(msg);
        }
      },
      created(){
        /*
        * 接收事件
        * 這種寫法也體現了:A 組件調用 B 組件中的方法。如果只是傳遞數據,可參考如下簡化寫法:
        * this.$bus.on('changeMsg', (msg) => { this.Bmsg = msg });
    	*/ 
        this.$bus.on('changeMsg', this.getMsg);
        // 此偵聽器只會觸發一次
        this.$bus.once('doOnce', (txt) => { console.log(txt) });
      },
      // 組件銷毀時,移除EventBus事件監聽
      beforeDestroy() {
        this.$bus.off('changeMsg', this.addTodo);
      },
    }
    </script>

    當我們點擊5次觸發按鈕時,效果如下:

    Vue中的eventBus怎么使用

    補充:移除監聽事件

    為了避免在監聽時,事件被反復觸發,通常需要在頁面銷毀時移除事件監聽。或者在開發過程中,由于熱更新,事件可能會被多次綁定監聽,這時也需要移除事件監聽。

    //使用方式一定義時
    this.$EventBus.$off('eventName');
    //使用方式二定義時
    EventBus.$off('eventName');

    到此,相信大家對“Vue中的eventBus怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    环江| 微博| 来宾市| 玉山县| 宜君县| 华蓥市| 潞西市| 鹤山市| 徐汇区| 南皮县| 阿坝县| 黑河市| 锡林浩特市| 水城县| 南宫市| 无锡市| 都江堰市| 江孜县| 石楼县| 许昌市| 永宁县| 陈巴尔虎旗| 揭东县| 琼海市| 汝阳县| 阆中市| 新龙县| 大悟县| 安乡县| 平定县| 新平| 沿河| 连州市| 嘉义县| 阳江市| 吴桥县| 攀枝花市| 太仓市| 仪陇县| 云林县| 灌云县|