文章目录

  • 前言
  • 一、基本用法
  • 二、响应式
    • 1.方法一:传递的参数用一个方法返回
    • 2.方法二:把需要传递的参数定义成一个对象
  • 总结

前言

官网概念:这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。


一、基本用法

在父组件中使用provide传值,在子组件中用inject接收。

// 父组件
data() {return {name: "卷儿"}
},
provide: function() {return {name: this.name}},
// 子组件
inject: ['name'],

这种方法传递过来的数据是没有响应性的,当你改变父组件中的name时,子组件中接收的name并不会改变。
官方解释:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。

二、响应式

1.方法一:传递的参数用一个方法返回

// 父组件
data() {return {name: "卷儿"}},provide: function() {return {newName: () => this.name}
// 子组件
inject: ['newName'],
computed: {hnewName() {return this.newName()}}
<!-- 子组件中的使用方式 -->
<h2>{{ hnewName }}</h2> <!-- 推荐使用这种方法 -->
<h2>{{ newName() }}</h2>

2.方法二:把需要传递的参数定义成一个对象

官方解释:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。

// 父组件
data() {return {obj: {name: "卷儿"}}},provide: function() {return {// 传递一个对象obj: this.obj}},
// 子组件
inject: ['obj'],
computed: {// 也可以不用计算属性重新定义objName() {return this.obj.name}}
<!-- 子组件中的使用方法 -->
<h2>obj的name: {{objName}}</h2>
<h2>obj的name: {{obj.name}}</h2>

总结

主要解决深层次的组件嵌套,祖先组件向子孙组件之间传值。
一层嵌套的父子组件可以使用props来传值,props本身就是有相应性的。
根据自身代码选择合适的传值方式,并不一定非要用provide/inject的传值。

vue2中provide/inject的使用和响应式传值相关推荐

  1. vue 中provide的用法_聊聊Vue中provide/inject的应用详解

    众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数 ...

  2. 聊聊 Vue 中 provide/inject 的应用

    众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数 ...

  3. Vue2.0 —— 由设计模式切入,实现响应式原理

    Vue2.0 -- 由设计模式切入,实现响应式原理 <工欲善其事,必先利其器> 既然点进来了,麻烦你看下去,希望你有不一样的收获. 大家好,我是vk,好久不见,今天我们一起来盘一盘关于 V ...

  4. VUE2中provide 和 inject用法,以及怎么做响应式数据?

    1. provide/inject说明 provide 和 inject, 用来实现实现跨组件之间通信. 父子/孙子组件之间任意通信. 在祖先组件中通过provide注入一个依赖,不论组件层次有多深, ...

  5. vue3中Provide/Inject的使用

    vue3中使用Provide/Inject依赖注入,将替代vue2中在原型链上挂载一些属性 //APP.vue//在app.vue内注册import { provide ,ref ,readonly} ...

  6. html自动裁剪图片宽度,html中如何让图片按比例响应式缩放、并自动裁剪的css技巧...

    响应式网站.移动端页面在DIV CSS布局中对于图片列表或图片排版时,如果想要图片按比例缩放,最简单的就是把img宽度设为100%,不设置高度,高度就会自动跟着高度缩放. 但是如果要达到的效果是,要让 ...

  7. vue新特性provide/inject深入学习

    阅读本文帮你你可以在使用provide/inject传递响应式数据时记住一个特性: provide传递的每一个响应式数据都需要值是一个引用不变的可监听对象. 在开发vue项目时,不可避免的需要进行组件 ...

  8. vue3中 provide 和 inject 用法

    前言: 在父子组件传递数据时,通常使用的是 props 和 emit,父传子时,使用的是 props,如果是父组件传孙组件时,就需要先传给子组件,子组件再传给孙组件,如果多个子组件或多个孙组件使用时, ...

  9. 浅析provide/inject用法、响应式、全局传递

    前言 Vue的父子间传值 : props 爷孙或者更深嵌套的组件间传值: provide/inject 更复杂的结构:vuex provide/inject 提供/注入 provide 一个对象或返回 ...

最新文章

  1. Django进阶之session
  2. java对象的访问定位_2、JVM-Java对象的创建、对象结构、对象访问定位-Go语言中文社区...
  3. uva-10954-贪心
  4. 《你的灯亮着吗》阅读笔记1
  5. 在VS2010下运行Qt程序
  6. spring 5企业级开发实战pdf_SpringBoot实战5-Spring基础-配置与注入
  7. java多线程实现端口扫描,使用Java开发多线程端口扫描工具
  8. org.hibernate.annotationexception no identifier specified for entity
  9. php类库下载下来怎么使用,PHP如何实现$this-[类库名称]-[类库方法]。
  10. NPOI Excel 单元格背景颜色对照表
  11. UML类图关系全面剖析
  12. IOS平台下的音视频即时通讯
  13. Android腾讯微博开放平台入门(一)开题与BaseString
  14. 微师电脑客户端 附使用教程
  15. 内网穿透干货教程,1分钟极速穿透内网端口
  16. 对比MySQL和Pandas计算用户最大连续登录天数
  17. 分布式系统下的纠删码技术之Erasure Code
  18. STM32CuBeMX驱动舵机
  19. Kotlin协变和逆变
  20. Xilinx芯片太贵,我选择国产替代!聊聊国产FPGA芯片选型

热门文章

  1. python中rgb颜色_自定义RGB颜色与Python诅咒
  2. 中南计算机绘图试题,中南大学计算机绘图试题b答案
  3. 王炸-GPT4.0的新能力与商业价值
  4. 事关男女的三十二个绝妙比喻——男女关系
  5. 讯时网关路由规则小结
  6. 汇编c语言基础教程编程达人,编程达人 《汇编、C语言基础教程》第二章 汇编基础2.2 寄存器...
  7. 该来的年终总结,还是来了
  8. 你了解眼角膜移植术吗?哪些眼疾需要接受角膜移植呢?
  9. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
  10. c语言画简谐振动图像,[求助] 实心小球沿正弦曲线运动