vue学习,使用provide/inject通信

提示:组件的provide,可以被其内所有层级的组件,通过inject引用


前言

需求:使用provide/inject通信

一、通信组件

1、AA.vue

<template>
  <div class="test">
    <p>1级 provid</p>
    <p><BB /></p>
  </div>
</template>

<script>
import BB from './BB'
export default {
  name: 'AA',
  components:{BB},
  data () {
    return {
      title:'---测试provid和inject通讯',
      name:'张三'
    }
  },
  provide(){
    return {
      title:this.title,
      changeName(name){
        this.name = name;
        console.log(this.name)
      },
    }
  },
  created(){
    console.log(this.name,'1级')
  }
}
</script>

2、BB.vue

<template>
  <div class="test">
    <p>2级 inject  {{ title }}</p>
    <p><CC /></p>
  </div>
</template>

<script>
import CC from './CC'
export default {
  name: 'BB',
  components:{CC},
  inject:{
    title:{
      type:String,
      default:''
    },
    changeName:{
      type:Function,
      default:function(name){}
    }
  },
  data () {
    return {
    }
  },
  created(){
    this.changeName('李四')
  }
}
</script>

3、CC.vue

<template>
  <div class="test">
    <p>3级 inject  {{ title }}</p>
    <p><DD/></p>
  </div>
</template>

<script>
import DD from './DD'
export default {
  name: 'CC',
  components:{DD},
  inject:{
    title:{
      type:String,
      default:''
    },
    changeName:{
      type:Function,
      default:function(name){}
    }
  },
  data () {
    return {
    }
  },
  created(){
    this.changeName('王五')
  }
}
</script>

4、DD.vue

<template>
  <div class="test">
    <p>4级 inject  {{ title }}</p>
  </div>
</template>

<script>
export default {
  name: 'DD',
  inject:{
    title:{
      type:String,
      default:''
    },
    changeName:{
      type:Function,
      default:function(name){}
    }
  },
  data () {
    return {
    }
  },
  created(){
    this.changeName('赵六')
  }
}
</script>

二、效果

在这里插入图片描述

AA组件引用BB组件
BB组件引用CC组件
CC组件引用DD组件
BB、CC、DD都可以通过 inject 获取到AA的provide
provide与inject之间的通讯,既可以传输数据,也可以传输方法
在BB、CC、DD调用AA的方法修改AA的name

不能在inject的changeName方法里,直接修改provide的title

更新beforeCreate状态
初始化inject
初始化props、setup、methods、data、computed、watch
初始化provide
更新created状态

三、参考文档

1、vue provide文档

总结

踩坑路漫漫长@~@

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值