vue3.x版本中使用tiny-emitter代替vue2.x的eventBus

vue官網(wǎng)

vue3.x版本中不能在使用eventBus了,不過官方有替代品 mitttiny-emitter

本文介紹的是tiny-emitter

安裝
npm install tiny-emitter --save
使用
var Emitter = require('tiny-emitter');
var emitter = new Emitter();

emitter.on('some-event', function (arg1, arg2, arg3) {
 //
});

emitter.emit('some-event', 'arg1 value', 'arg2 value', 'arg3 value');
實(shí)例方法
on(event, callback[, context])訂閱事件
  event - 要訂閱的事件名稱
  callback - emit觸發(fā)事件時(shí)要調(diào)用的函數(shù)
  context - (可選的) - 將事件回調(diào)綁定到的this上下文

once(event, callback[, context])只訂閱一次事件
  event - 要訂閱的事件的名稱
  callback - emit發(fā)出事件時(shí)要調(diào)用的函數(shù)
  context - (可選的) - 將事件回調(diào)綁定到的this上下文

off(event[, callback])取消訂閱事件或所有事件。如果沒有提供回調(diào),它將取消對(duì)所有事件的訂閱。
  event - 要取消訂閱事件的名稱
  callback - 綁定到事件時(shí)使用的回調(diào)函數(shù)
  emit(event[, arguments...])觸發(fā)命名事件
  event - emit觸發(fā)事件時(shí)的事件名稱
  arguments... - 傳遞給事件的回調(diào)函數(shù)任何數(shù)量的參數(shù)
項(xiàng)目中使用方法
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import Emitter from 'tiny-emitter'

const emitter = new Emitter()
const app = createApp(App)
// 綁定為全局可用
app.config.globalProperties.emitter = emitter

app.mount('#app')

組件中的使用方法

// 接收事件方法
this.emitter.on('changeLoading', (news) => {
    this.isShowLoding = news
})
// 發(fā)送事件方法
this.emitter.emit('changeLoading', true)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容