eventBus封裝

中央事件總線eventBus的實質(zhì)就是創(chuàng)建一個vue實例钓丰,通過一個空的vue實例作為橋梁實現(xiàn)vue組件間的通信。它是實現(xiàn)非父子組件通信的一種解決方案虽抄。

eventBus 一般用法

而 eventBus實現(xiàn)也非常簡單

import Vue from 'Vue'
export default new Vue

我們在使用中經(jīng)常最容易忽視余素,又必然不能忘記的東西闻鉴,那就是:清除事件總線 eventBus。

不手動清除芒篷,它是一直會存在搜变,這樣當前執(zhí)行時,會反復進入到接受數(shù)據(jù)的組件內(nèi)操作獲取數(shù)據(jù)针炉,原本只執(zhí)行一次的獲取的操作將會有多次操作挠他。本來只會觸發(fā)并只執(zhí)行一次,變成了多次篡帕,這個問題就非常嚴重殖侵。

當不斷進行操作幾分鐘后,頁面就會卡頓镰烧,并占用大量內(nèi)存拢军。

所以一般在vue生命周期 beforeDestroy或者 destroyed中,需要用vue實例的 $off方法清除 eventBus

beforeDestroy () {
  bus.$off('click')
}

可當你有多個 eventBus時怔鳖,就需要重復性勞動 $off銷毀這件事兒茉唉。
這時候封裝一個 eventBus就是更佳的解決方案。


擁有生命周期的 eventBus

我們從Vue.init中可以得知:

Vue.prototype._init = function () {
  const vm: Component = this
  // a uid vm實例唯一標識
  vm._uid = uid ++
  // ...
}

每個Vue實例有自己的 _uid作為唯一標識败砂,因此我們讓 EventBus和_uid`關聯(lián)起來赌渣,并將其改造:


image.png

main.js中注冊:

import EventBus from './eventBus.js'
Vue.use(EnemtBus)

組件中使用:

created () {
    /**
     * @description 訂閱 on-change 事件
     * @param
     *   參數(shù)1 事件名
     *   參數(shù)2 事件傳遞參數(shù)
     *   參數(shù)3 默認為當前組件this,如果不傳則需要手動銷毀
     */
    this.$eventBus.$on('on-change', (...args) => {
      console.log(...args)
      //
    }, this)
  }
  methods () {
    onChangeHandle() {
      this.$eventBus.$emit('on-change', '傳遞參數(shù)1', '傳遞參數(shù)2')
    }
  },
  beforeDestroy () {
    // 不再需要手動銷毀eventBus訂閱事件
  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昌犹,一起剝皮案震驚了整個濱河市坚芜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斜姥,老刑警劉巖鸿竖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沧竟,死亡現(xiàn)場離奇詭異,居然都是意外死亡缚忧,警方通過查閱死者的電腦和手機悟泵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闪水,“玉大人糕非,你說我怎么就攤上這事∏蛴埽” “怎么了朽肥?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長持钉。 經(jīng)常有香客問我衡招,道長,這世上最難降的妖魔是什么每强? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任始腾,我火速辦了婚禮,結(jié)果婚禮上空执,老公的妹妹穿的比我還像新娘浪箭。我一直安慰自己,他們只是感情好辨绊,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布山林。 她就那樣靜靜地躺著,像睡著了一般邢羔。 火紅的嫁衣襯著肌膚如雪驼抹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天拜鹤,我揣著相機與錄音框冀,去河邊找鬼。 笑死敏簿,一個胖子當著我的面吹牛明也,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惯裕,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼温数,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蜻势?” 一聲冷哼從身側(cè)響起撑刺,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎握玛,沒想到半個月后够傍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甫菠,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年冕屯,在試婚紗的時候發(fā)現(xiàn)自己被綠了寂诱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡安聘,死狀恐怖痰洒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浴韭,我是刑警寧澤带迟,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站囱桨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嗅绰。R本人自食惡果不足惜舍肠,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窘面。 院中可真熱鬧翠语,春花似錦、人聲如沸财边。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酣难。三九已至谍夭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憨募,已是汗流浹背紧索。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菜谣,地道東北人珠漂。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像尾膊,于是被迫代替她去往敵國和親媳危。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353