在vue中有很多方法可以实现组件之间的传值,其中provide与inject也是组件传值的一种。

provide与inject的传值与props类似,前者可以给后代组件传值,而props是只能给子组件传值。

举个例子:
前提:a组件里调用了b组件,同时b组件里调用了c组件
区别:
a组件可以用props方法直接传数据给b组件,但不能传数据给c组件
a组件可以用 provide与inject 方法直接传递数据给b组件,也可以直接给c组件传值

具体的用法

a组件:

<template><div>a组件<bbb /></div>
</template>
<script>
import bbb from './bbb'
export default {provide() {return {msg: this.msg}},components: {bbb},data() {return {msg: 'a组件的数据'}}
}
</script>

b组件:

<template><div>b组件b---{{ msg }}<ccc /></div>
</template>
<script>
import ccc from './ccc'
export default {inject: ['msg'],components: {ccc}
}
</script>

c组件:

<template><div>c组件c---{{ msg }}</div>
</template>
<script>
export default {inject: ['msg']
}
</script>

效果展示:

但有一点要注意:是用provide与inject方法传值,如果值修改后面组件的值是不会跟着变得,也就是说值不会响应
也就是说:如果把a组件中的msg改了,b组件,c组件接收到的msg还是以前的数据,并不会变
那么问题来了 如果想要响应式的效果怎么办呢
直接把传的数据变成复杂类型的数据就行了
例如传一个对象

<template><div>a组件<bbb /></div>
</template>
<script>
import bbb from './bbb'
export default {provide() {return {msg: this.passdata}},components: {bbb},data() {return {passdata: {msg: 'a组件的数据'}}}
}
</script>

这样我们就可以的到一个可以响应的数据,如果想改变直接this.passdata.msg去修改

浅谈provide与inject相关推荐

  1. vue 中provide的用法_浅谈vue中provide和inject 用法

    一.概念解析 成对出现:provide和inject是成对出现的 作用:用于父组件向子孙组件传递数据 使用方法:provide在父组件中返回要传给下级的数据,inject在需要使用这个数据的子辈组件或 ...

  2. vue 中provide的用法_[转]浅谈vue中provide和inject 用法

    provide:Object | () => Object inject:Array | { [key: string]: string | Symbol | Object } provide ...

  3. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  4. 浅谈 Linux 高负载的系统化分析

    简介: 浅谈 Linux 高负载的系统化分析,阿里云系统组工程师杨勇通过对线上各种问题的系统化分析. 讲解 Linux Load 高如何排查的话题属于老生常谈了,但多数文章只是聚焦了几个点,缺少整体排 ...

  5. java对象头markword_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  6. 浅谈angular的作用

    一.简单认识angular 1 AngularJS是什么? AngularJs(简称ng)是一个用于设计动态web应用的结构框架.首先,它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计we ...

  7. 浅谈Google认证失败项分析

    https://www.cnblogs.com/houser0323/p/14002924.html 标签:Google认证.GMS认证.XTS失败项分析.Android.cts 作者:秋城 http ...

  8. 浅谈计算机图书的翻译——“增值翻译”的几个参考例子 (转)

    浅谈计算机图书的翻译--"增值翻译"的几个参考例子 (转)[@more@] 我的一篇文章,请大家提提意见( Mailto:w-gao@263.NET">w-gao@ ...

  9. 浅谈计算机图书的翻译——“增值翻译”的几个参考例子

    我的一篇文章,请大家提提意见( w-gao@263.net ),笔者的小小心愿是将"增值翻译"发展成一门可操作性极强的理论,:-) ------------------------ ...

最新文章

  1. ICCV 2017 《Unsupervised Learning from Video to Detect Foreground Objects in Single Images》论文笔记
  2. Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
  3. Win32多线程编程(3) — 线程同步与通信
  4. 小爱同学100个奇葩回复_杰理新一代蓝牙芯片将内置小爱同学,语音唤醒、降噪、连续对话加持蓝牙音箱...
  5. 论文笔记《Neural Machine Translation by Jointly Learning to Align and Translate》
  6. 计算机科学技术名家讲座许进,论高校计算机科学与技术课程中存在的问题与改革方向.pdf...
  7. VS2019详细安装教程
  8. 概率论与数理统计——随机变量及其分布
  9. Moore型状态机和Mealy型状态机的区别以及各自Verilog的实现细节:为什么Moore型状态机需要多一个状态?怎么选择用哪一种状态机?
  10. Pytorch-《Deep learning with pytorch》1.2.1训练imagenetmini
  11. mysql异地双机热备_mysql双机热备
  12. contiki-进程
  13. 「MBR」- 主引导记录(Master Boot Record) @20210315
  14. 有服务器必须要虚拟主机吗,有服务器还要虚拟主机吗
  15. Ubuntu中Cairo Dock内天气预报地理位置的设置
  16. 虚拟计算机组装的软件,如何使用虚拟光驱安装软件
  17. 小米生态链:关于智能家居的故事
  18. [渝粤教育] 盐城工学院 机电传动控制 参考 资料
  19. MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)
  20. 教你一招——命令行查看笔记本连接过的WIFI密码

热门文章

  1. oracle crm系统叫什么,目前市场上的CRM系统有哪些
  2. 达梦数据库下载【最新版本】
  3. 光伏扶贫项目指标下达 如何严把光伏质量关?
  4. 怎么批量转换图片格式?这些方法帮助你一键转换
  5. 常见的浏览器指纹包含哪些
  6. 如何将一个陈旧的游戏翻新?以中国象棋为例展开的头脑风暴
  7. Linux 集群技术
  8. HTML5+CSS3选择器
  9. Android之WiFi连接检测
  10. centos 安装kermit