Vue3中mitt使用

在Vue3中 o n , on, on,off和$once实例方法已被移除,在Vu3中可以使用Mitt库

1. 安装Mitt

npm install mitt -s

2. main.ts全局挂载

import { createApp } from 'vue'
import App from './App.vue'
import CardVue from './components/Card.vue'
import mitt from "mitt"

const Mitt = mitt()

export const app = createApp(App)

declare module 'vue'{
  export interface ComponentCustomProperties{
    $Bus: typeof Mitt
  }
}

app.config.globalProperties.$Bus = Mitt

app.mount('#app')
  1. 使用emit()派发事件 on()接受事件 off()事件移除 clear()情况所有
  • emit()派发事件
<template>
  <div>
    <div>我是A组件</div>
    <button @click="emit">B组件发送事件</button>
  </div>
</template>

<script setup lang=ts>
import {getCurrentInstance} from "vue"

const instance = getCurrentInstance()
const emit = ()=>{
  console.log("mitt");
  
  instance.proxy.$Bus.emit("on-xiaoman","A组件参数")
}

</script>
  • on()监听事件
<template>
  <div>
  </div>
</template>

<script setup lang=ts>

import { getCurrentInstance } from "vue"
const instance = getCurrentInstance()

instance.proxy.$Bus.on("on-xiaoman", (param) => {
  console.log("=======", param);

})


</script>

监听所有事件

instance?.proxy?.$Bus.on('*',(type,param)=>{
    console.log(type,param,'===========>B')
})
  • 移除监听事件
const Fn = (num: any) => {
    console.log(num, '===========>B')
}
instance?.proxy?.$Bus.on('on-num',Fn)//listen
instance?.proxy?.$Bus.off('on-num',Fn)//unListen
  • 情况所有监听
instance?.proxy?.$Bus.all.clear() 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值