vue3事务总线写法,vue3公共总线写法emit

这篇博客介绍了两种在Vue应用中实现组件间通信的方法。第一种是通过mitt库创建全局事件总线,分别在组件中进行事件的发射和监听。另一种方法是创建一个comBus.ts文件,导出mitt实例并命名为bus,然后在各组件中导入并使用bus进行事件的触发和接收。这两种方法都详细展示了如何在不同组件中发送和接收自定义事件。
摘要由CSDN通过智能技术生成
1.方法1写法:
需要安装mitt
npm install --save mitt

// main.ts中写法
import mitt from "mitt"
import { createApp } from "vue"

const app = createApp({})  //正常配置
// main挂载事务总线
app.config.globalProperties.$mittBus = mitt();

// 一个界面进行发送
setup() {
    // 创建代理实例
   const { proxy } = getCurrentInstance() as any;
   // 方法发送
   const refreshCurrentTagsView = (path: string) => {
       proxy.mittBus.emit('onTagsViewRefreshRouterView', path);
   };
}
// 另一个界面接受
setup() {
// 页面加载前,处理缓存,页面刷新时路由缓存处理
onBeforeMount(() => {
   proxy.mittBus.on('onTagsViewRefreshRouterView', (path: string) => {
      if (route.path !== path) return false;
   });
});
// 页面卸载时
onUnmounted(() => {
   proxy.mittBus.off('onTagsViewRefreshRouterView');
});
}
2.方法2写法
新建comBus.ts文件,内容如下:
import mitt from 'mitt'
const bus = {}
const emitter = mitt()
bus.$on = emitter.on
bus.$off = emitter.off
bus.$emit = emitter.emit
export default bus
----------------------------------------------------------
①界面引入文件
import comBus from '@/views/AatoBus/comBus'
export default defineComponent({
   mixins: [ComBus],
})
②进行发送comBus .$emit
comBus .$emit('defaultCursorExecToOneRow', item)
③需要的界面进行接受
onBeforeUnmount(() => {
  // 防止多次执行,ComBus发送的都要增加
  ComBus.$off("defaultCursorExecToOneRow");
});
onMounted(() => {
  ComBus.$on('defaultCursorExecToOneRow',(item)=>{
     // 进行接受值的处理
  });
})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值