【vue3】provide + inject的使用

本文探讨了Vue中父子组件通信的两种方式:props和provide/inject。props适合简单的父向子单向数据流,而provide/inject则允许祖先组件向所有子孙组件提供值,避免深层组件 prop 传递的复杂性。通过示例代码展示了provide/inject的用法,并指出在多级组件通信中它的优势。
摘要由CSDN通过智能技术生成

父子传参的方法不仅仅使用props还有provide + inject;之前又说过props的方法,今天主要浅说下provide + inject;

父组件中使用 provide ; 子组件中使用 inject

<script setup>
    // 父组件中
    import { ref,provide} from 'vue'

    // 提供静态值
    provide('static', 'count')

    // 提供响应式的值
    const count = ref(0)
    provide('count', count)

    // 传递一个函数
    provide('getCount', () => { 
        return count;
    });
</script>
<script setup>
    // 子组件中
    import { inject , onMounted } from 'vue'
 
    // 注入值的默认方式
    const static= inject('static')
 
    // 注入响应式的值
    const count = inject('count')

    // 获取函数的值
    const getCount= inject('getCount')
    onMounted(() => {
        const count= getCount();

        console.log('拿到了对象', count);
    });
</script>

那么问题来了,props 和 provide 分别在什么时候用呢?

父组件下的很多个子组件中都使用了一个参数,或者父组件下面有很多的孙组件(子组件下面在使用子组件,在使用子组件)这种情况,

如果使用props 的话会有很多个参数传递来传递去,很有可能会弄错,从而出现问题;使用provide组合会好很多;

provide 组合在父组件中注入一次,那么在该父组件下的所有子组件和孙组件都可能获取到这个注入的值。

简单的一个父组件,一个子组件的使用props就会方便很多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值