当前位置: 首页 > article >正文

Vue2的依赖注入(跨级通信)基本使用

provide(提供) ,inject(注入)  祖先级组件用provide传递数据,它的所有后代都可以通过inject取到数据

使用演示:

//祖先组件
<template>
 <div>
   父组件传的值:{{num}}
</div>
</template>
 
<script>
//导入子组件
import Son from '@/component/Son'
export default{
 data(){
   return{
     num:10
   }
  },
 
//祖先级组件把要传递的数据放入provide里
provide(){  
   return{
      num:this.num
  },
}
}
</script>
 

 

//儿子组件
<template>
  <div>
    子组件接收传来的值:{{num}}
  </div>
</template>
 
<script>
//导入孙子级别组件
import Grandson from '@/component/Grandson'
  export default{
   //后代组件可以通过inject拿到数据
   inject:['num']
}
</script>
//孙子组件
<template>
   <div>
    孙子组件接收传来的值:{{num}}
  </div>
</template>
 
<script>
 export default{
   //后代组件可以通过inject拿到数据
  inject:['num']
 
}
</script>

但是依赖注入的数据默认不是响应式的,祖先级别组件修改数据,其他使用到这个数据的组件不会同步

我点击按钮使祖先组件的num值+1,只有祖先组件的num值变了

使依赖注入的数据成为响应式的:

 第一种方法(把要传的数据放在对象里):
<template>
  <div>
    父组件传的值:{{ obj.num }} <br />
    <Son></Son>
    <button @click="addNum">+1</button>
  </div>
</template>
 
//再祖先组件里把要穿的数据放在一个对象里
export default{
 
 data(){
    return{
      obj:{
          num:10   
        }      
    }
 },
 
provide(){
   return{
     //把这个对象传过去
     obj:this.obj
   }
 },
 
methods: {
    addNum () {
      this.obj.num++
    }
}
<template>
 <div>
   {{obj.num}}
 </div>
<//template>
 
//孙子组件
export default{
  inject:['obj']
}
此时再祖先组件里修改num数据,所有使用到这个数据的组件都会同步

 第二种方法,传递一个参数用方法返回

//祖先组件
export default{
  data(){
    return{
      age:6
    }
  },
 
 provide(){
   return{
     age(): => this.age
   }
  }
}
<template>
  <div>
    {{age()}}
 </div>
</template>
 
//孙子组件
export default{
  inject:['age']
}


http://www.kler.cn/news/359388.html

相关文章:

  • 【从零开始的LeetCode-算法】945. 使数组唯一的最小增量
  • 五款最佳免费解压软件APP推荐:手机端高效解压工具盘点
  • SHELL脚本之循环语句的for循环以及中断循环的语句
  • 暖水毯/取暖毯语音识别控制芯片IC方案
  • 使用Verilog设计分频模块(2Hz)
  • 外贸商城源码,进出口跨境电商平台电脑端+移动端网站+客服系统 网站设计及源码输出
  • 基于Java+Springboot+Vue开发的体育用品商城管理系统
  • @RequestMapping对不同参数的接收方式
  • Bluetooth Channel Sounding中关于CS Step及Phase Based Ranging相应Mode介绍
  • 算法|牛客网华为机试1-10C++
  • LeetCode第100题:相同的树
  • 10-Python基础编程之函数
  • OpenLayers:构建现代Web地图应用
  • 用动态IP软件改变IP地址:探索原理与实用指南‌
  • CTFHUB技能树之文件上传——前端验证
  • Java中JSR303校验
  • Flux.merge 使用说明书
  • 基于STM32的工厂安防巡检机器人设计流程实现自主识别检测、机器人自主行驶、环境监控和数据采集
  • 传智杯 第六届—第二场—D
  • MATLAB支持的字体