当前位置: 首页 > Web前端 > HTML

vue2.0组件之间的事件分发与接收

时间:2023-04-02 12:07:15 HTML

在vue的开发中,经常会在两个组件之间进行事件的通信。在vue1.0中,我们使用$dispatch和$broadcastchild.vue:this.$dispatch('eventName',this.data);parent.vue:event:{'eventName':function(data){//执行的方法}}但是$dispatch和$broadcast在vue2.0中被弃用了,因为基于组件树结构的事件流处理方式真的很难理解,在组件结构扩展的过程中会越来越脆弱,这只适用于父子组件之间的通信。官方给出的最简单的升级建议是使用集中式事件处理器,而且也明确说明空vue实例即可,因为vue实例在初始化vue之前在vue2.0中实现了一个事件分发接口,添加一个名为eventhub的空vue对象datanewVue({el:'#app',router,render:h=>h(App),data:{eventHub:newVue()}})某个组件内部调用事件触发this.$root.eventHub.$emit('eventName',event.target);另一个组件调用事件接收器,在组件销毁时移除事件绑定,并使用$off方法created(){this.$root.eventHub.$on('eventName',(target)=>{this.functionName(target)});},method:{functionName(target){console.log(target);}}