Vue:父子组件之间的通信
父子组件之间的通信方式:
- 父组件通过props向子组件传递数据;
- 子组件通过事件向父组件发送消息。
一、父组件向子组件传递数据
在子组件模板中的props中定义需要传值的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14const cpn = {
template: '#cpn',
props: {
cmessage: {
type: String,
default: 'default message',
requird: true // 设置是否必传
},
cmovies: {
type: Array,
default:() =>[]
}
}
}在组件模板中调用自己的属性
1
2
3
4
5
6
7
8
9
10<template id="cpn">
<div>
<p>{{ cmovies }}</p>
<!-- 循环遍历父组件中传递过来的数据 -->
<ul>
<li v-for="item in cmovies">{{ item }}</li>
</ul>
<h2>{{ cmessage }}</h2>
</div>
</template>在父组件中调用子组件,使用
v-bind
将父组件的值传递给子组件1
2
3<div id="app">
<cpn :cmovies="movies" :cmessage="message"></cpn>
</div>
二、子组件向父组件发送消息
- 在子组件中,通过
$emit()
来触发事件 - 在父组件中,通过
v-on
来监听子组件事件
1 | <!-- 父组件模板 --> |
1 | // 子组件 |
1 | // 父组件 |