vue-全局事件总线mitt库(父子通信,兄弟通信都可,兼容vue2、vue3)

vue-全局事件总线mitt库(父子通信,兄弟通信都可,兼容vue2、vue3)

安装

npm install mitt

封装JS文件,方便调用

import mitt from "mitt"
const $emitter = mitt();
export default $emitter

使用

传值用emit
接收用on

文件A:父组件

<template>
  <div>
    <B></B>
	<C></C>
	A接受到:{{thing}} 
  </div>
</template>
 
<script>
//导入组件以及刚才封装的js文件
import B from "./B.vue";
import C from "./C.vue";
import $emitter from "../../common/eventbus.js"
export default {
  name: "A",
  components: {
    B,
	C
  },
  data(){
    return {
		thing:"",
    }
  },
  mounted(){//要在mounted中接收
  	$emitter.on("thing",(val)=>{
  	//通过on方法接收来自子组件B的值
  		this.thing = val
  	})
  },
  methods:{
  }
};
</script>

文件B:兄弟组件1

<template>
  <div>
	<button @click = "handler">B:点击</button>
  </div>
</template>
 
<script>
import $emitter from "../../common/eventbus.js"
export default {
  name: "B",
  methods:{
	  handler(){
		  $emitter.emit("thing","一个拥抱")
		  //通过emit向外传值
	  }
  }
};
</script>

文件C:兄弟组件2

<template>
  <div>
    <span>C接收到:{{thing}}</span>
  </div>
</template>
 
<script>
	import $emitter from "../../common/eventbus.js"
	export default {
		
	  name: "C",
	  data(){
	    return {
	      thing:""
	    }
	  },
	  mounted(){
		  $emitter.on("thing",(val)=>{
			//通过on方法接收来自兄弟组件B的值
			  this.thing = val
		  })
	  }
	};
</script>

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值