想让vue子(孙)组件的动作一直触发到祖父(或更多级)组件

<component-祖父>
<component-父>
<component-孙> 在这里this.$emit()一个动作,想一直传递到祖父组件那里,必须要在父级那里做一次接力么?

父级组件中不需要对孙级的组件做任何的反应

阅读 5.6k
4 个回答

组件通信,月经...
复杂场景使用vuex,具体看文档.
简单用用可以试试这个方案.
根组件实例之前
Vue.prototype.$pub = new Vue()
然后根组件下所有组件都可以通过
this.$pub.$emit('event', payload)的方式广播消息.
同时,所有的组件都可以通过
this.$pub.$on('event', payload)的方式接收到这个消息,包括发消息的组件本身.

使用这种方式,可以实现一个全局的dialog组件.
笔记

不建议这样去传递,这种情况用vuex会很简单,传两级会导致代码不容易维护,即使是最简单的cms后台,用了store后你会发现代码维护性和可读性大大加强,怕数据混乱可以建模块来管理state,新手的确不容易理解,但是理解后你会发现很多问题变得很简单。封装组件除外,那个的确需要这么去做,业务层不建议,另外vue的render函数是个进阶必学,用起来会很爽!

最佳实践,自己跑一下,不行那就是不行咯。换成vuex去跑就行了

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