v3.2父子组件的双向数据绑定

文章描述了如何在Vue应用中实现父组件与子组件之间的双向数据绑定,以及如何通过`v-model`和自定义事件`update:modelValue`实现实时更新和通信。
摘要由CSDN通过智能技术生成

1、效果

在子组件输入框中输入父组件也会实时输入
在父组件输入框中输入子组件也会实时输入
且点击父组件的按钮可以打印出input的值
在这里插入图片描述
在这里插入图片描述

2、实现代码

  • 父组件
<template>
  <div class="main">
    <h2>父组件</h2>
    <input v-model="msg" />
    <button @click="handClick">父组件按钮</button>
    <Son2 v-model="msg" />
  </div>
</template>

<script lang="js" setup>
import { ref } from "vue";
import Son2 from "@/components/Son2.vue";
const msg=ref('')
const handClick=()=>{
  console.log('父组件按钮',msg.value)
}
</script>
  • 子组件
<template>
  <div class="mainS">
    <h3>子组件</h3>
    <input :value="props.modelValue" @input="onInput" />
  </div>
</template>
<script lang="js" setup>
import { ref } from "vue";
// import { defineProps, defineEmits } from "vue"; 不导入也可使用
// 接收父组件传过来的值规定使用modelValue接收
const props = defineProps(["modelValue"]);
//声明当前组件将要触发一个名为 update:modelValue 的自定义事件
const emit = defineEmits(["update:modelValue"]);
//监听子组件输入事件
const onInput = (e) => {
  const myData = e.target.value;
  //将 myData 变量作为参数传递给事件的监听者
  emit("update:modelValue", myData);
};
</script>

如有错误及不足,望指正!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值