Vue3中使用provide和inject进而实现组件跨级通信.

本文探讨Vue3中如何利用provide和inject实现组件间的跨级通信,详细介绍了使用方法、注意事项及响应式原理。通过示例代码展示在组件嵌套较深时,如何避免props传递的繁琐,同时指出在实际应用中需注意的父子组件关系以及对象类型的provide值的处理方式。实验证明,即使不依赖Vue的响应式API,provide/inject也能实现数据的响应式更新。
摘要由CSDN通过智能技术生成

本篇文章参考Vue官网学习, 加上自己的理解。
版本: Vue@3


关于provide&&inject:

  • 在一般的情况下, 父组件向子组件通信我们一般采用 props 属性进行组件之间的通信, 但是如果在组件嵌套很深的情况下, 这个办法虽然可以, 但是却有点繁琐, 相比如果使用 vuex的话, 我们还需要安装这个插件, 所以Vue提供了一组方法 provide&&inject, 父组件中提供一个属性, provide, 子组件中使用一个属性进行值的接受 inject , 这样不管组件之间层级嵌套有多深, 都可以实现组件之间的通信。

比如,通信中遇到这种情况:

  • 来自官网的图:

在这里插入图片描述
在这里,我们需要进行组件1 和 组件5 的通信,那么这里就可以使用这一对属性了,

使用方法:

父组件

  • js部分:
const app = Vue.createApp({
   
    data() {
   
      return {
   
        todos: ['Feed a cat']
      }
    },
    components: {
   
      cpn,  // 将子组件进行注册
    },
    provide() {
   
      return {
   
        todos: this.todos,
      }
    }
  })
  app.mount('#app')   //  挂载 app
  • html 部分
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值