前言
众所周知vue是一种mvvm框架,它相对于jquery可能比较大的差异点之一就在于组件之间的通信了。本文重点是梳理了前两个,父子组件通信和eventBus通信,我觉得Vue文档里的说明还是有一些简易,我自己第一遍是没看明白。
父子组件的通信
非父子组件的eventBus通信
利用本地缓存实现组件通信
Vuex通信
第一种通信方式:父子组件通信
父组件向子组件传递数据
父组件一共需要做4件事
1.
import son from './son.js' 引入子组件 son2.在
components : {"son"} 里注册所有子组件名称3.在父组件的template应用子组件,
<son></son>4.如果需要传递数据给子组件,就在template模板里写
<son :num="number"></son>
// 1.引入子组件
import counter from './counter'
import son from './son'
// 2.在ccmponents里注册子组件
components : {
counter,
son
},
// 3.在template里使用子组件
<son></son>
// 4.如果需要传递数据,也是在templete里写
<counter :num="number"></counter>子组件只需要做1件事
1.用props接受数据,就可以直接使用数据
2.子组件接受到的数据,不能去修改。如果你的确需要修改,可以用计算属性,或者把数据赋值给子组件data里的一个变量
// 1.用Props接受数据
props: [
'num'
],
// 2.如果需要修改得到的数据,可以这样写
props: [
'num'
],
data () {
return {
number : this.num
}
},子组件向父组件传递数据
父组件一共需要做2件事情
在template里定义事件
在methods里写函数,监听子组件的事件触发
// 1. 在templete里应用子组件时,定义事件changeNumber
<counter :num="number"
@changeNumber="changeNumber"
>
</counter>
// 2. 用changeNumber监听事件是否触发
methods: {
changeNumber(e){
console.log('子组件emit了',e);
this.number = e










