网站首页 > 精选文章 正文
_组件数据传递
我们之前讲解过了组件之间的数据传递,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>
四、通信原理图解
- 父组件通过:绑定方法到子组件属性 onEvent
- 子组件通过 props 接收这个函数
- 子组件中调用 onEvent('传递数据') 直接触发父组件方法
- 父组件的 dataFn 方法被调用,更新 message 数据
- 模板中的 {{ message }} 被更新显示
五、关键点说明
- 父组件通过 props 向子组件传递函数
- 子组件可以直接在模板中调用这个函数并传递参数
- 父组件的方法可以直接操作组件状态(message)
- 这种方式实现了子组件向父组件传值的单向通信
六、扩展建议
- 可以添加类型检查:prop: { type: Function, required: true }
- 可以添加错误处理,在子组件中检查函数是否存在
- 对于复杂场景可以考虑使用事件总线或Vuex状态管理
猜你喜欢
- 2025-06-13 前端必看!7 个 Vue3 性能优化实战技巧,让页面飞起来
- 2025-06-13 前端也能玩转截图?uni-app + Vue3 实现页面快照功能
- 2025-06-13 Vue2 升级 Vue3 一文通关(vue-cli2.0升级3.0)
- 2025-06-13 Vue2的16种传参通信方式(vue有几种传参方式)
- 2025-06-13 面试官:聊聊你知道的Vue与React的区别
- 2025-06-13 vue3.0总结之ref与reactive(vue ref reactive)
- 2025-06-13 90% 的前端工程师都不知道的 Vue3 实战神操作,看完直呼后悔没早学
- 2025-06-13 vue3 组件初始化流程(vue组件初始化顺序)
- 2025-06-13 从 React 过渡到 Vue 3:开发者的实践指南
- 2025-06-13 vue重定向(vue重定向后403报错)
- 最近发表
-
- Vue基础入门,第15节 一键页面换新衣,动态修改样式的3种方法
- uniapp Vue3.x组件库uview-vue3(uniapp用什么组件库)
- Vue3 样式绑定: 内联样式与Class属性的数组语法
- Vue2的样式(class和style)绑定(vue样式scoped)
- 前端开发,在项目中常用的css样式整理
- 前端必看!7 个 Vue3 性能优化实战技巧,让页面飞起来
- 前端也能玩转截图?uni-app + Vue3 实现页面快照功能
- Vue2 升级 Vue3 一文通关(vue-cli2.0升级3.0)
- Vue2的16种传参通信方式(vue有几种传参方式)
- 面试官:聊聊你知道的Vue与React的区别
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)