[Vue3]父子组件相互传值数据同步

本文详细介绍了Vue3中如何使用setup语法糖进行父子组件间的值传递,包括props、toRef、computed、emit和expose等方法,以及v-model的双向绑定机制,强调了官方推荐实践的重要性。

简介

vue3中使用setup语法糖,父子组件之间相互传递数据及数据同步问题


父传子

props传递值 使用v-bind绑定

父组件通过props给子组件传递值,props传递的值在子组件中无法修改

// 父组件
<template>
	<div style="color: red">
		 我是父组件
		 <Child :msg="msg"></Child>
	</div>
</template>
 
<script setup>
    import Child from './Child.vue';
    import {
   
    ref } from 'vue';
    const msg = ref('111');
</script>
// 子组件
<template>
  <div style="color: blue">
    <div>我是子组件, 父组件传递来的值是{
   
   {
   
   msg}}</div>
  </div>
</template>

<script setup>
	defineProps({
   
   
	  msg: String,
	})
</script>

在这里插入图片描述

props需要计算

子组件获取props后,需要显示根据其计算后的值,而props是无法修改的。

toRef

props是具有响应式的,普通的解构和取值会失去响应式,所以下面这种情况只能取到props的初始值,如果props变化子组件不会更新:

// 父组件
<script setup>
  import Child from './Child.vue';
  import {
   
    ref } from 'vue';
  const msg = ref('111');
</script>

<template>
  <div style="color: red">
    我是父组件
    {
   
   {
   
    msg }}
    <Child :msg="msg"></Child>
    <button @click="() => msg = '222'">父组件点击改变props值</button>
  </div>
</template>
// 子组件
<script setup>
  import {
   
    ref } from 'vue'
  const props = defineProps({
   
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值