vue中的inject学习教程


Posted in Javascript onApril 24, 2019

最近看源码有一段对于整合参数的代码,

normalizeProps(child, vm)
 normalizeInject(child, vm)
 normalizeDirectives(child)

想象里边的Inject很少用到,所以查了一下资料,

通常组件传参是有两种情况

  1. 父子组件进行传参,这时候通常利用props
  2. 非父子组件传参,这时候一般利用vuex

会有一种情况隔代组件传参,这时候可以利用props一层一层传递下去,但是代码就比较乱了

所以就有了 provide/inject 进行隔代组件传递

父组件

<template>
  <div class="test">
    <son></son>
  </div>
</template>
<script>
export default {
  name: 'Test',
  provide: {
    name: 'Garrett'
  }
}
</script>

子组件

<template>
  <div>
    {{name}}
  </div>
</template>
 
<script>
export default {
  name: 'Garrettson',
  inject: [name]
}
</script>

对于使用场景,基础组件应该使用props,我个人觉得一般用于比较复杂业务,提供基础数据,比如最近的基金详情页。可以直接在最顶层提供基金的基本信息,然后子组件都可以访问的到,不用每个单独提供detail的props 属性。

PS:vue学习- provide / inject

1、解释

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

provide 选项应该是:一个对象或返回一个对象的函数
inject 选项应该是:一个字符串数组,或 一个对象,对象的 key 是本地的绑定名

2、示例

父组件中提供

provide() {
  return {
   map_nodeObj: { map_node: this.obj }
   // 提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。
  }
 },

子组件中引入

inject: {
  map_nodeObj: {
   default: () => {
    return {map_node: '0'}
   }
  }
 },

使用: this.map_nodeObj.map_node

3、运行顺序

data
provide
created // 在这个阶段$el还未生成,在这先处理privide的逻辑,子孙组件才可以取到inject的值
mounted
...

总结

以上所述是小编给大家介绍的vue中的inject学习教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
js脚本实现数据去重
Nov 27 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
Dec 09 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 #Javascript
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 #Javascript
vue模仿网易云音乐的单页面应用
Apr 24 #Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
Apr 24 #Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 #Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 #Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 #Javascript
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
javascript各种复制代码收集
2008/09/20 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
Python生成器定义与简单用法实例分析
2018/04/30 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
教学个人的自我评价分享
2014/02/16 职场文书
双创工作实施方案
2014/03/26 职场文书
学习三严三实心得体会
2014/10/13 职场文书
2014年商场工作总结
2014/11/22 职场文书
英文感谢信格式
2015/01/21 职场文书
2015年工商所工作总结
2015/05/21 职场文书
老人院义工活动感想
2015/08/07 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Java异常处理try catch的基本用法
2021/12/06 Java/Android