1. props
演示效果:
Props 是 Vue 中最常见的一种父组件将数据传递给子组件的方式。
父组件:
<div>
button type="primary" @click="changeData">修改信息
"father.name" :age="father.age">
子组件:child.vue
<div>
<div>父亲姓名:{{ props.name }}div>
<div>父亲年龄:{{ props.age }}div>
div>
通俗易懂讲解:
1.在父组件中,通过 reactive 定义了响应式变量 father ,包含 name 和 age 属性。
2.父组件通过 import 导入子组件 child.vue,并在 template 中加载子组件。
3.通过 “:” 将子组件的 name 属性和父组件的 father.name 属性进行绑定,将子组件的 age 属性和父组件的 father.age 属性进行绑定,
4.父组件按钮 click 事件绑定 changeData 方法,点击按钮修改父组件变量 father 的值。
5.子组件通过 defineProps 接收父组件传递的数据。其中子组件 name 变量接收父组件 father.name 的值, 子组件 age 变量接收父组件 father.age 的值,
2. $emit
演示效果:
子组件可以使用 $emit 方法触发一个事件,父组件可以通过监听这个事件来实现组件之间的通信。
父组件
<div>
@changeFatherData="changeData">
父亲姓名:{{ father.name }}div>
<div>父亲年龄:{{ father.age }}div>
div>
子组件
<div>
button type="danger" @click="changeCurrentData">修改父组件数据
通俗易懂讲解:
1.在父组件中,通过 reactive 定义了响应式变量 father ,包含 name 和 age 属性。并通过插值表达式显示 name 和 age 的初始值。
2.父组件通过 import 导入子组件 child.vue,并在 template 中加载子组件。
3.父组件定义修改 name 和 age 属性的方法 changeData。 通过 ”@“ 将子组件要调用的 changeFatherData 方法和父组件的 changeData 方法进行绑定。
4.子组件通过 defineEmits 定义要调用的父组件的方法 changeFatherData。
5.子组件点击按钮通过 emits 调用定义的父组件方法 changeFatherData,并传递数据。
3. defineExpose 和 ref
演示效果
子组件通过 defineExpose 暴露需要共享的数据,父组件可以通过 ref 获取子组件的数据。父组件需要定义一个和子组件 ref 属性同名的变量。
父组件
<div>
button type="primary" @click="changeChildData">修改子组件数据
子组件
<div>
width: 30%" :title="title" type="error" effect="dark" />
姓名:{{ child.name }}
年龄:{{ child.age }}
评论0