如何实现复合组件通信?

需求:用vue写一个类似饿了么checkout组件,外面是包裹组件 里面是选项组件,要实现将选中的组件的id以数组的形式绑定到包裹组件上

问题:如果在选项组件上通过点击调用封装的dispatch方法在包裹组件上触发相关事件,那只能在包裹组件外部监听该事件再调用相关方法绑定选中组件ID。如何才能在包裹组件内部监听自定义事件触发相关方法?也就是说如何在图二中监听自定义事件,进而在该组件中实现绑定选中的组件ID?
图片描述

包裹组件

选项组件

相关计算属性

阅读 2.3k
2 个回答

wrap { mounted() {this.$on('item-click', handleItemClick)} }

item { methods: handleClick() { this.dispatch('item-click', id)}

抱歉没有仔细看代码就回答:
涉及到复杂的状态管理或数据流动,非常推荐用vuex,可以大大提高后期维护效率。
当某一个组件提交了状态到vuex之后,其余的事情当前组件就不关心了,其它组件会不会接收这个状态,接收了会怎么主力都不再关心,而且通过chrome的vue devtool也方便调试。
如果单单是父子组件,那么emiton肯定就足够了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题