<component-祖父>
<component-父>
<component-孙> 在这里this.$emit()一个动作,想一直传递到祖父组件那里,必须要在父级那里做一次接力么?
父级组件中不需要对孙级的组件做任何的反应
<component-祖父>
<component-父>
<component-孙> 在这里this.$emit()一个动作,想一直传递到祖父组件那里,必须要在父级那里做一次接力么?
父级组件中不需要对孙级的组件做任何的反应
组件通信,月经...
复杂场景使用vuex,具体看文档.
简单用用可以试试这个方案.
根组件实例之前
Vue.prototype.$pub = new Vue()
然后根组件下所有组件都可以通过this.$pub.$emit('event', payload)
的方式广播
消息.
同时,所有
的组件都可以通过this.$pub.$on('event', payload)
的方式接收到这个消息,包括发消息的组件本身.
使用这种方式,可以实现一个全局的dialog组件.
笔记
不建议这样去传递,这种情况用vuex会很简单,传两级会导致代码不容易维护,即使是最简单的cms后台,用了store后你会发现代码维护性和可读性大大加强,怕数据混乱可以建模块来管理state,新手的确不容易理解,但是理解后你会发现很多问题变得很简单。封装组件除外,那个的确需要这么去做,业务层不建议,另外vue的render函数是个进阶必学,用起来会很爽!
13 回答13k 阅读
7 回答2.1k 阅读
9 回答1.7k 阅读✓ 已解决
6 回答1.5k 阅读
3 回答1.3k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
可以参考下 element-ui 源码里面封装的src/mixins/emitter.js里面封装的mixins;
指定触发对象,组件名,通过while循环,向上遍历,找到组件后触发。。