<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Vue中的事件總線

          共 1313字,需瀏覽 3分鐘

           ·

          2021-04-27 19:35

          導(dǎo)讀

          在用Vue框架的時候,組件(component)是我們必不可以少創(chuàng)建的,組件既可以作為父組件,也可以作為子組件和兄弟組件。但如何讓它們之間互相通信呢?


          大家用的比較多應(yīng)該就是父子組件之間的通信了,父組件可以通過 props 給子組件傳遞參數(shù),子組件可以通過 $emit 事件告訴父組件該干嘛干嘛了。


          那么如果要實現(xiàn)兄弟組件間的通信呢?兄弟組件基于同一個父組件,之前有一個比較傳統(tǒng)的做法,比如要實現(xiàn)A組件和B組件兩個兄弟組件的通信。


          就是A組件通過 $emit 告訴它爹,我這邊ok了,然后父組件通過 watch 監(jiān)聽某個信息數(shù)據(jù),信息數(shù)據(jù)發(fā)生變化了,那么可以告訴B組件去做后面的事情了,相當(dāng)于父組件做了個中間商。

          聽起來是不是很麻煩,那么 事件總線(EventBus) 就能很好的處理這類情況。

          01

          EventBus簡介

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

          02

          如何創(chuàng)建EventBus

          // main.jsVue.prototype.$bus = new Vue();

          這種方式初始化的?EventBus?是一個全局的事件總線,里面是沒有聲明綁定的事件。

          通過Vue的原型對象構(gòu)建的時間總線,那么我們直接可以在項目中用 this 來調(diào)用。

          接著上面說的,我們要在A組件中,告訴B組件做一件事情,比如:吃飯。

          03

          利用EventBus發(fā)送事件

          那么我們在A組件中綁定吃飯事件:



          onConfirm() {???//發(fā)出事件???this.$bus.$emit('eating',?'吃飯啦');},


          eating 是事件名稱,當(dāng)發(fā)了 onConfirm方法后,就可以發(fā)出事件。


          04

          接收事件

          然后在B組件中掛載的注冊監(jiān)聽,當(dāng)A發(fā)出,B自然就能接收到了。

          mounted() {????this.$bus.$on('eating',?value?=>?{????????console.log(value);?????});????//=>?'吃飯啦'},


          05

          銷毀事件

          由于事件總線非常消耗資源,所以記得在組件中銷毀這些創(chuàng)建的事件。

          我們在可以在組件的被銷毀之前去銷毀它。

          beforeDestroy() {        this.$bus.$off('eating'); //銷毀事件    },
          06

          總結(jié)

          本文主要通過簡單的實例學(xué)習(xí)了Vue中有關(guān)于?EventBus?相關(guān)的知識點。主要涉及了?EventBus?如何實例化,又是如何通過?$emit?發(fā)送事件,又是如何通過?$on?來接收事件和銷毀事件。從實例中我們可以了解到,?EventBus?可以較好的實現(xiàn)兄弟組件之間的數(shù)據(jù)通訊。

          不必糾結(jié)于當(dāng)下,也不必太憂慮未來,當(dāng)你經(jīng)歷一些事情的時候,眼前的風(fēng)景已經(jīng)和從前不一樣了。

          --《1Q84》

          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美第一网站 | 国产亚洲欧美精品久久久www | 美女喷水网站 | 毛片免费观看视频 | 爱爱网址无码 |