vue3 setup (组合式 API) 父子传参,父孙传参。provide异步传参。

本文介绍Vue3中使用组合式API实现父子组件及父孙组件间的数据传递方法,包括通过propsData直接传递和利用provide/inject进行传递。演示了如何在组件中声明接收属性并监听变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue3 setup (组合式 API) 父子传参,父孙传参。

  1. 通过 propsData传递
//父组件
<--html-->
<problem :resData="resData"></problem>

<--js-->
<script setup>
let resData = reactive({ arr: { name: '李四', age: 1 } });
//异步获取值
function getData(){
   return new Promise((res,rej)=>{
	.......
	resData.arr = {
       name: '张三',
       age: 19
     };
   })
}
</script>

//子组件
<--html-->
<div>{{fpData }}</div>
<fxRadio :fpData="fpData"></fxRadio> //子组件中调用孙组件
<script setup>
const propsData = defineProps({
  resData: {
    type: Object,
    default: {}
  }
});
let fpData = ref({});
fpData.value = propsData.resData;
</script>

//孙组件
<--html-->
<div>{{sdata}}</div>
<script setup>
const propsData = defineProps({
  fpData: {
    type: Object,
    default: {}
  }
});
let sdata= ref({});
sdata.value = propsData.fpData;
</script>

总的来说,给孙组件传递的时候,和父传子的方式是一样的,照搬就行,另外vue3中已经不需要通过watch来监听传递的对象的改变了。

  1. 通过 provide传递
//父组件
<--js-->
<script setup>
import { reactive, provide} from 'vue';	//引入provide
let resData = reactive({ arr: { name: '李四', age: 1 } });
//异步获取值
function getData(){
   return new Promise((res,rej)=>{
	.......
	resData.arr = {
        name: '张三',
        age: 19
      };
   })
}
getData();
provide('pData', resData);	//可以不用等接口返回,先进行扩散。异步获得数据后会自动更新。
</script>

//子组件
<--html-->
<div>{{tdata }}</div>

<--js-->
<script setup>
import { inject, ref } from 'vue'; 	//引入inject

let tdata = ref({});
const pData = inject('pData');
tdata.value = pData;
watch(tdata.value, (newval) => {
   console.log('改变了@@', newval);
   //tdata.value = newval;
 });
</script>
//孙组件 与 子组件写法一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越来越好。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值