Vue2.x 组件通信共有12种
- props
- $emit / v-on
- .sync
- v-model
- ref
- $children / $parent
- $attrs / $listeners
- provide / inject
- EventBus
- Vuex
- $root
- slot
父子组件通信可以用:
props
$emit / v-on
$attrs / $listeners
ref
.sync
v-model
$children / $parent
兄弟组件通信可以用:
EventBus
Vuex
$parent
跨层级组件通信可以用:
provide/inject
EventBus
Vuex
$attrs / $listeners
$root
vue2通信使用
props
父组件向子组件传递数据
子组件接受到数据之后, 不能直接修改父组件的数据。会报错,所以当父组件重新渲染时,数据会被覆盖。如果子组件内要修改的话推荐使用 computed
$emit / v-on
子组件通过派发事件的方式给父组件数据,或者触发父组件更新等操作
.sync
可以帮我们实现父组件向子组件传递的数据的双向绑定,所以子组件接收到数据后可以直接修改,并且会同时修改父组件的数据
v-model
和 .sync 类似,可以实现将父组件传给子组件的数据为双向绑定,子组件