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

vue官网

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');
实例方法
on(event, callback[, context])订阅事件
  event - 要订阅的事件名称
  callback - emit触发事件时要调用的函数
  context - (可选的) - 将事件回调绑定到的this上下文

once(event, callback[, context])只订阅一次事件
  event - 要订阅的事件的名称
  callback - emit发出事件时要调用的函数
  context - (可选的) - 将事件回调绑定到的this上下文

off(event[, callback])取消订阅事件或所有事件。如果没有提供回调,它将取消对所有事件的订阅。
  event - 要取消订阅事件的名称
  callback - 绑定到事件时使用的回调函数
  emit(event[, arguments...])触发命名事件
  event - emit触发事件时的事件名称
  arguments... - 传递给事件的回调函数任何数量的参数
项目中使用方法
// 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
})
// 发送事件方法
this.emitter.emit('changeLoading', true)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容