Vue组件通信的几种方法

上一节说到,vue.js是允许子组件通过props接受父组件的信息,但是不允许父组件通过props接受子组件的信息

1. $emit()和on

当子组件需要向父组件传递数据时,就要用到自定义事件。
使用观察者模式,子组件用 $emit()来触发事件,父组件用 $on()来监昕子组件的事件 。
更常用的是: 父组件也可以直接在在子组件自定义标签上使用v-on来监听子组件触发的自定义事件。

2. bus:兄弟组件和跨多级组件通信

推荐使用一个空的 Vue 实例作为中央事件总线( bus )

3. this.$parent 可以直接访问该组件的父组件,父组件可以通过this.$children访问他所有的子组件,还可以使用ref来定义子组件的索引


设计原则:
子组件应该尽可能地避免依赖父组件的数据,更不应该去主动修改它的数据.
父子组件最好还是通过props 和 $emit 来通信。

4. 更好的状态管理解决方案vuex

你可能感兴趣的:(Vue组件通信的几种方法)