vue3父子组件通信

一,父传子------defineProps

方法:

在父组件的模板中使用子组件标签,并且给标签自定义属性和属性名,即通过v-bind绑定数值,而后传给子组件;子组件则通过defineProps接收使用。

父组件:

复制代码
<template>
  <div >
	<div>我是父组件</div>
    <<SonCom :fatherProp="msg" ></SonCom> -
  </div>
</template>
<script setup lang='ts'>
  import SonCom from '@/components/SonCom.vue';  // 引入子组件
  import { ref } from 'vue';
  const msg = ref<string>('coderkey')
</script>

子组件:

复制代码
<template>
  <div >
	<div>我是子组件</div>
  </div>
</template>
<script setup lang='ts'>
 import { defineProps } from 'vue';
  let prop = defineProps({
    fatherProp: {
        required: true,
        type: String,
        default: 'pink',
    }
  }) 
  console.log(prop.fatherProp)  // coderkey
</script>

二,子传父------defineEmits

方法:

复制代码
defineEmits['自定义事件名']

子组件中通过emit调用父组件中的自定义事件,给父组件的这个方法里传入数据数据。

父组件:

复制代码
<template>
  <div >
	<div>我是父组件</div>
    <<SonCom :fatherProp="msg" @update:fatherProp="fatherClick"></SonCom> -
  </div>
</template>
<script setup lang='ts'>
  import SonCom from '@/components/SonCom.vue';  // 引入子组件
  import { ref } from 'vue';
  const msg= ref<string>('coderkey')
  
  const fatherClick = (data:any) => {
  console.log(data);  // 子组件传递数据给父组件
}
</script>

子组件:

复制代码
<template>
  <div >
	<div>我是子组件</div>
	<button  @click="sendDateHandle">子传父数据</button>
  </div>
</template>
<script setup lang='ts'>
 import { defineProps,defineEmits } from 'vue';
  let prop = defineProps({
    fatherProp: {
        required: true,
        type: String,
        default: 'pink',
    }
  }) 
  console.log(prop.msg)  // coderkey
  
  let emit = defineEmits(['update:fatherProp'])
  const sendDateHandle = () => {
  	emit('update:fatherProp','子组件传递数据给父组件')
  }
</script>

相关推荐
修炼的dance25 分钟前
白底图存JPG,sharp开mozjpeg背景杂点少近三成
前端
anOnion34 分钟前
构建无障碍组件之Grid Pattern
前端·html·交互设计
乔旭伟1 小时前
Vben3 中后台表格封装实战:useVbenVxeGrid 的全局收敛与七个坑
前端·anti-design-vue·1024程序员节
鶴哥只手遮天1 小时前
jQuery 4.0 源码架构与工程实践-第 10 章 尺寸、几何与显隐
前端·javascript·jquery
Mia_墨黎1 小时前
2026 Windows 11 终端美化完全指南
前端·后端
用户1880687493521 小时前
戴着 Rokid 接成语:用 AIUI 做一局有提示、有复盘的“接着说”
前端
Sakura_j_h_2 小时前
Three.js 单文件离线机械臂工作台:爆炸图、透明外壳与剖面
前端·机械臂·webgl·three.js·1024程序员节·esbuild
计算机魔术师3 小时前
管谷歌的不是Pichai一个人,是一整层AI智能体
前端
米米商聊3 小时前
图标能点,按钮就可用了吗?键盘、名称与收藏状态
前端·javascript
Younglina4 小时前
三个晚上,我和 WorkBuddy 做了个生图网站
前端·后端·ai编程