Vue3全局组件通信之EventBus
责任编辑:梦想飞行     时间:2023-03-31     来源:转载于:https://www.jianshu.com/p/d8d55d8f0c48
责任编辑:梦想飞行
时间:2023-03-31  来源:转载于:https://www.jianshu.com/p/d8d55d8f0c48
分类: 开发资源
浏览量: 236

创建 3.x 的 EventBus

mittEventBus

首先,需要安装 mitt

npm install --save mitt

然后在 libs 文件夹下,创建一个 bus.ts 文件,内容和旧版写法其实是一样的,只不过是把 Vue 实例,换成了 mitt 实例。

import mitt from 'mitt';
export default mitt();

创建和移除监听事件

在需要暴露交流事件的组件里,通过 on 配置好接收方法,同时为了避免路由切换过程中造成事件多次被绑定,多次触发,需要在适当的时机 off 掉:

import { defineComponent, onBeforeUnmount } from 'vue'
import bus from '@libs/bus'

export default defineComponent({
  setup () {
    // 定义一个打招呼的方法
    const sayHi = (msg: string = 'Hello World!'): void => {
      console.log(msg);
    }

    // 启用监听
    bus.on('sayHi', sayHi);

    // 在组件卸载之前移除监听
    onBeforeUnmount( () => {
      bus.off('sayHi', sayHi);
    })
  }
})

调用监听事件

在需要调用交流事件的组件里,通过 emit 进行调用:

import { defineComponent } from 'vue'
import bus from '@libs/bus'

export default defineComponent({
  setup () {
    // 调用打招呼事件,传入消息内容
    bus.emit('sayHi', '哈哈哈哈哈哈哈哈哈哈哈哈哈哈');
  }
})




来源:转载于:https://www.jianshu.com/p/d8d55d8f0c48

回复:

Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved. 湘ICP备20015126号-2
联系我们