Vue3 中没有了 EventBus 跨组件通信,但是现在有了一个替代的方案 mitt.js,原理还是 EventBus
vue3兄弟传值只需安装一个小插件
npm i mitt -S
在src文件夹中建一个 mitt.js文件 文件中写入以下内容
// 先安装 npm i mitt -S
// 然后像以前封装 bus 一样, 封装一下
import mitts from 'mitt'
const mitt = mitts()
export default mitt
兄弟组件a
import mitt from "../mitt";// 引入bus
import { onUnmounted } from "vue";
const goAdd = (e) => {
console.log("我是兄弟b传过来的数据", e);
};
mitt.on("goAdd", goAdd); // 第一个参数是事件的名字,第二个是函数
onUnmounted(() => { // 销毁的时候给他解绑
mitt.off("goAdd", goAdd);
});
兄弟组件b
<template>
<button @click="btn">我是兄弟组件b</button>
</template>
import mitt from "../mitt";
function btn() {
mitt.emit("goAdd", '我发给另一个组件'); // 第一个 事件的名字 第二个是要穿的参数
}
return{
btn
}