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>

相关推荐
DataFunTalk2 分钟前
30位数据科学家集结完毕,揭晓大模型时代数据科学的“晋级之路”
前端·后端·算法
罗政19 分钟前
AI工具箱源码+成品网站源码+springboot+vue
vue.js·人工智能·spring boot
云边有个稻草人23 分钟前
【Web前端技术】第一节—HTML简介
前端·html·什么是网页?·web标准的构成·为什么需要web标准·什么是 html?·网页的形成
修复bug26 分钟前
利用pnpm patch命令实现依赖包热更新:精准打补丁指南
开发语言·javascript·vue.js
冰墩墩126 分钟前
使用nvm install XXX 下载node版本时网络不好导致npm下载失败解决方案
前端·npm·node.js
ILUUSION_S32 分钟前
Vue接口平台学习七——接口调试页面请求体
vue.js·vue
LkeuY1 小时前
纯原生(html+css)实现自定义复选框
前端·css
特立独行的猫a1 小时前
嵌入式Linux设备使用Go语言快速构建Web服务,实现设备参数配置管理方案探究
linux·前端·golang