当前位置: 首页 > news >正文

前端流行框架Vue3教程:17. _组件数据传递

_组件数据传递

我们之前讲解过了组件之间的数据传递,props 和自定义事件 两种方式

  • props:父传子

  • 自定义事件:子传父

    除了上述的方案,props也可以实现子传父


一、项目结构
src/
└── components/├── ComponentsA.vue  # 父组件└── ComponentsB.vue  # 子组件
二、子组件(ComponentsB.vue)解析
<script>
export default {data() {return {}},props: {onEvent: Function  // 接收父组件传递的函数}
}
</script><template><h3>ComponentsB</h3><p>{{ onEvent('传递数据') }}</p>  <!-- 调用父组件函数并传递参数 -->
</template>
三、父组件(ComponentsA.vue)解析
<script>
import ComponentsB from "@/components/ComponentsB.vue";export default {components: {ComponentsB  // 注册子组件},data() {return {message: ''  // 用于接收子组件传递的数据}},methods: {dataFn(data) {  // 子组件调用的方法this.message = data}}
}
</script><template><h3>ComponentsA</h3><p>父元素:{{ message }}</p>  <!-- 显示子组件传递的数据 --><ComponentsB :onEvent="dataFn"/>  <!-- 绑定方法到子组件属性 -->
</template>
四、通信原理图解
  1. 父组件通过:绑定方法到子组件属性 onEvent
  2. 子组件通过 props 接收这个函数
  3. 子组件中调用 onEvent('传递数据') 直接触发父组件方法
  4. 父组件的 dataFn 方法被调用,更新 message 数据
  5. 模板中的 {{ message }} 被更新显示
五、关键点说明
  • 父组件通过 props 向子组件传递函数
  • 子组件可以直接在模板中调用这个函数并传递参数
  • 父组件的方法可以直接操作组件状态(message)
  • 这种方式实现了子组件向父组件传值的单向通信
六、扩展建议
  • 可以添加类型检查:prop: { type: Function, required: true }
  • 可以添加错误处理,在子组件中检查函数是否存在
  • 对于复杂场景可以考虑使用事件总线或Vuex状态管理

相关文章:

  • 深入解析HTTP协议演进:从1.0到3.0的全面对比
  • 2025认证杯数学建模第二阶段A题小行星轨迹预测思路+模型+代码
  • 机器学习中采样哪些事
  • React 第四十二节 Router 中useLoaderData的用途详解
  • 牛客网NC22015:最大值和最小值
  • 全面解析机器学习与深度学习中的模型权重文件格式与应用场景
  • 【HarmonyOS 5】鸿蒙mPaaS详解
  • 《Python星球日记》 第80天:目标检测(YOLO、Mask R-CNN)
  • Uniapp 安卓实现讯飞语音听写(复制即用)
  • 隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
  • [数据结构]7. 堆-Heap
  • 单片机-STM32部分:17、数码管
  • Elasticsearch 分片机制高频面试题(含参考答案)
  • 乡村农家游乐小程序源码介绍
  • 【测试工具】selenium和playwright如何选择去构建自动化平台
  • duxapp 2025-01-13 更新 支持小程序配置文件
  • STC8H系列单片机STC8H_H头文件功能注释
  • 【hot100-动态规划-300.最长递增子序列】
  • Vue3 本地环境 Vite 与生产环境 Nginx 反向代理配置方法汇总【反向代理篇】
  • Python多线程
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权
  • 日本航空自卫队一架练习机在爱知县坠毁
  • 跨文化戏剧的拓荒者与传承者——洪深与复旦剧社的百年回响
  • SIFF动画单元公布首批片单:《燃比娃》《凡尔赛玫瑰》等
  • 西北大学副校长范代娣成陕西首富?系家庭财富,本人已从上市公司退出