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 相关文章推荐
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
Dec 23 Javascript
js动态拼接正则表达式的两种方法
Mar 04 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
使用JQuery库提供的扩展功能实现自定义方法
Sep 09 Javascript
javascript学习笔记(三)BOM和DOM详解
Sep 30 Javascript
一些实用性较高的js方法
Apr 19 Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
Angular2 http jsonp的实例详解
Aug 31 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
JSON获取属性值方法代码实例
Jun 30 Javascript
JavaScript字符串转数字的简单实现方法
Nov 27 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
使用Python的内建模块collections的教程
2015/04/28 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
单位单身证明范本
2014/01/11 职场文书
英文导游欢迎词
2014/01/11 职场文书
秋天的雨教学反思
2014/04/27 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
销售会议开幕词
2016/03/04 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android
Docker部署Mysql8的实现步骤
2022/07/07 Servers