vue组件通讯各种场景的使用

在简单的场景中$emit,props,Bus,vuex的区别其实不大,只有到复杂场景中才会深刻的体会到各种通讯方式的优劣。
vue组件通讯各种场景的使用
这里要把筛选功能和自定义方案的新增编辑删除,封装到一个组件中,因为还有5-6个模块要用这个组件,为了方便调用,而且他们之间存在强关联关系,就把他们封装在一个组件中,为了方便各个模块的代码维护,拆分成多个小功能组件,于是就出现了复杂的组件通讯。

方案演变

  • 最初是采用的props和$emit来通讯,但是因为这几个组件之间有嵌套关系,要props和emit两次才能实现,写到一半觉得这样不大合适。
  • 觉得改用bus来通信,bus来通讯就是噩梦的开始,最开始还好知道哪里触发哪里接收,但是后来bus多了之后,各个emit和on之间的关系就有点理不清了,不知道哪里emit没有,再过几天来修改功能的时候,各个之间的关系更是完全理不清了

终极解决方案

  • 优先使用props和$emit
  • 其次采用ref和$parents
  • 跨组件通讯时才使用Bus

vue组件通讯各种场景的使用