vue3中的子组件向父组件通信和父组件向子组件通信

一、父组件向子组件通信:Props

父组件通过 ​​属性绑定​ ​ 传递数据,子组件通过 defineProps接收数据。

​​特点​​:单向数据流(子组件不可直接修改 Props)。

代码示例:

​​父组件 (ParentComponent.vue)​​:

java 复制代码
<template>  
  <ChildComponent :message="parentMessage" :user="userData" />  
</template>  

<script setup>  
import { ref } from 'vue';  
import ChildComponent from './ChildComponent.vue';  

const parentMessage = ref('Hello from Parent');  
const userData = ref({ name: 'Alice', age: 25 });  
</script>

​​子组件 (ChildComponent.vue)​​:

java 复制代码
<template>  
  <div>  
    <p>{{ message }}</p>  <!-- 输出:Hello from Parent -->  
    <p>{{ user.name }} ({{ user.age }})</p>  <!-- 输出:Alice (25) -->  
  </div>  
</template>  

<script setup>  
const props = defineProps({  
  message: { type: String, required: true },  
  user: { type: Object, default: () => ({}) }  
});  
</script>

​​关键点​​:

  • Props 需在子组件中显式声明类型和验证规则。

  • 复杂数据(如 Object/Array)应使用 ref或 reactive保持响应性。


📩 二、子组件向父组件通信:自定义事件

子组件通过 defineEmits声明事件,用 emit()触发事件;父组件通过 @事件名监听并处理数据。

代码示例:

​​子组件 (ChildComponent.vue)​​:

java 复制代码
<template>  
  <button @click="sendData">提交数据</button>  
</template>  

<script setup>  
const emit = defineEmits(['data-submitted']);  

function sendData() {  
  emit('data-submitted', { id: 1, value: '子组件数据' });  
}  
</script>

​​父组件 (ParentComponent.vue)​​:

java 复制代码
<template>  
  <ChildComponent @data-submitted="handleData" />  
</template>  

<script setup>  
function handleData(payload) {  
  console.log(payload); // { id: 1, value: '子组件数据' }  
}  
</script>
相关推荐
程序员Sunday4 分钟前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
Setsuna_F_Seiei22 分钟前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
志尊宝43 分钟前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
zhangzeyuaaa1 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙1 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
优选资讯2 小时前
标签打印软件怎么对接 Excel 数据
前端·excel
思无邪662 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
一个风轻云淡3 小时前
GCC 和 GDB命令简单解读
java·linux·前端
u0111026754 小时前
图片处理接口如何统一错误信息 前端提示与后端错误码设计
前端·状态模式
福兮说4 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic