vue3 隔代传值 事件

VUE3隔代传值MITT

1.安装mitt

npm install --save mitt

2.utils文件夹下,新建一个bus.ts

eventbus.ts

/ mitt库默认导出的是一个函数,我们需要执行它从而得到事件总线的对象
// 这里我们在js中暴露这个事件总线对象
import mitt from "mitt";
const emitter = mitt()
export default emitter

3. 使用,使用mitt进行兄弟组件之间的通信实现 或者子孙隔代组件 都可以

父组件

// 这里我们导入我们单独写的暴露事件总线对象的js
// 模板代码
<button @click="sendHomeContent">send</button>  

// 导入事件总线
import emitter from "./utils/eventbus.js";  
// methods代码
sendHomeContent(){
    // 触发自定义总线why,并传入一个对象
     emitter.emit("why",{name:'why',age:19})
}

然后孙组件或者兄弟组件接收



// 导入事件总线
import emitter from "./utils/eventbus.js";

// 在创建vue实例时,注册why事件总线
created(){
    emitter.on("why",msg=>{
        console.log("HomeContent接收到得About发送得数据了:",msg);
    });
}

如果没有按钮 建议放在onMounted

onMounted(async() => {
  emitter.emit('getKey', { key: portId })
})

同样接收

const key = ref('')
emitter.on('getKey', (val:any) => {
  key.value = val.key.value
})

最后用完清空是个好习惯

emitter.all.clear()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值