vue3如何进行数据依赖注入provide/inject

Vue提供了一种依赖注入的方式,通过`provide`在祖父级组件中分发数据或方法,然后在任何子孙级组件中使用`inject`来接收这些数据。这种方法允许不通过props直接将数据从高层组件传递到深层组件,例子中展示了如何设置和使用`flag`变量在祖父和子孙组件之间通信。

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

vue中的依赖注入方式是使用函数原型链来进行实现的

当父组件有很多数据需要分发给其子代组件的时候, 就可以使用provide和inject,在任何后代组件中,我们都可以使用 inject 来接收 provide 提供的数据或方法

在这里插入图片描述


//祖父级组件

<template>
    <div class="App">
        <button>我是祖父级组件</button>
        <A></A>
    </div>
</template>
    
<script setup lang='ts'>
import { provide, ref } from 'vue'
import A from './components/A.vue'
let flag = ref<number>(1)
provide('flag', flag)
</script>

//子孙级组件

<template>
    <div style="background-color: green;">
        我是子孙级组件
        <button @click="change">change falg</button>
        <div>{{ flag }}</div>
    </div>
</template>
    
<script setup lang='ts'>
import { inject, Ref, ref } from 'vue'
 
const flag = inject<Ref<number>>('flag', ref(1))
const change = () => {
    flag.value = 2
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

泠泠在路上

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

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

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

打赏作者

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

抵扣说明:

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

余额充值