Vue的全局事件总线实现任意组件间通信

本文介绍了如何在Vue应用中创建并使用全局事件总线进行组件间的通信。首先,在main.js中安装全局事件总线,通过Vue.prototype挂载。然后,展示了一个接收数据的组件如何注册监听自定义事件,并在销毁前解除绑定。最后,演示了发送数据的组件如何触发自定义事件,将数据传递给其他组件。这种方法灵活地实现了非父子组件间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全局事件总线原理:利用自定义事件实现

  1. 在main.js中安装全局事件总线

    import Vue from 'vue';
    import App from 'App.vue';
    new Vue({
    	render: h => h(App),
    	beforeCreate() {
    		// 在Vue实例创建之前安装全局事件总线
    		Vue.prototype.$bus = this;
    	}
    }).$mount('#app');
    
  2. 在需要接收数据的组件中定义、解绑自定义事件

    <!-- 需要接收数据的组件 -->
    <template></template>
    <script>
    	export default {
    		methods: {
    			getValue(value) {
    				console.log('接收到的数据为:' + value);
    			}
    		},
    		mounted() {
    			this.$bus.$on('zidingyiEvent', this.getValue);
    		},
    		beforeDestroy() {
    			this.$bus.$off('zidingyiEvent');
    		}
    	}
    </script>
    
  3. 在需要发送数据的组件中触发自定义事件

    <template>
    	<div>
    		<button @click="send">点击传递数据</button>
    	</div>
    </template>
    <script>
    	export default {
    		data() {
    			return {
    				person: {
    					name: 'wuwu',
    					age: 18
    				}
    			}
    		},
    		methods: {
    			send() {
    				this.$bus.$emit('zidingyiEvent', this.person);
    			}
    		}
    	}
    </script>
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值