Vue学习笔记3--全局事件总线

发布时间:2024年01月13日

Vue学习笔记3—全局事件总线

1.全局事件总线可以实现任意组件间通信

全局事件总线示意图

X需具备的条件:

  • 所有的组件都要能看见X
  • 可以调用$on $off $emit
  • Vue.prototype.x ={a:1, b:2} 可以被所有组件看见
  • VueComponent.protoype.proto === Vue.prototype
  • 组件实例对象(vc)可以访问到Vue原型上的属性、方法

在这里插入图片描述

2. 安装全局事件总线(main.js)

//创建vm
new Vue({
	el:'#app',
	render: h => h(App),
	beforeCreate() {
		Vue.prototype.$bus = this //安装全局事件总线,$bus就是当前应用的vm
	},
})

3.使用事件总线

  • 接收数据: A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。
methods(){
  demo(data){......}
}
......
mounted() {
	this.$bus.$on('hello',this.demo)//绑定自定义事件
},


  • B组件触发自定义事件,并提供数据,
this.$bus.$emit('hello',data)
  • 最好在A组件的beforeDestroy钩子中,用$off去解绑当前组件所用到的事件,已防止$bus负担过重
beforeDestroy(){
	this.$bus.$off('hello')
}
文章来源:https://blog.csdn.net/jxncxgx/article/details/135538828
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。