Vue3 跨组件传参 provide 与 inject

本文详细介绍了Vue中如何使用`provide`和`inject`进行数据在父组件与子组件以及子组件间的传递,通过实例展示了从第一层组件传递到多层子组件的机制。

provide 用于:让父组件 传递数据。

inject 用于:让后代组件 接收数据。

语法格式:

// 传递数据
import { provide } from 'vue';
provide('数据名', 数据);

// 接收数据
import { inject } from 'vue';
let 变量 = inject('数据名');

跨组件传参:

第一层组件:传递数据。

<template>
  <h3>我是第一层组件</h3>
  <p>{{ info.name }} : {{ info.age }}</p>
  <hr />
  <Two></Two>
</template>

<script setup>
// 引用 provide 函数
import { provide, reactive } from 'vue'
import Two from "../components/Two.vue"
let info = reactive({ name: "张三", age: 18 });
// 给后代组件传递数据
provide('info', info);
</script>

第二层组件:接收数据。 

<template>
  <h3>我是第二层组件</h3>
  <p>{{ info.name }} : {{ info.age }}</p>
  <hr />
  <Three></Three>
</template>

<script setup>
// 引用 inject 函数
import { inject } from 'vue'
import Three from "../components/Three.vue"
// 接收数据
let info = inject('info');
</script>

第三层组件:接收数据。

<template>
  <h3>我是第三层组件</h3>
  <p>{{ info.name }} : {{ info.age }}</p>
</template>

<script setup>
// 引用 inject 函数
import { inject } from 'vue'
// 接收数据
let info = inject('info');
</script>

最终效果:

:传递的数据可以在任意一层后代组件中使用。 

原创作者:吴小糖

创作时间: 2024.3.26

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小吴吴吴呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值