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 相关文章推荐
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
Aug 14 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
jQuery实现的经典滑动门效果
Sep 22 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
JavaScript 经典实例日常收集整理(常用经典)
Mar 30 Javascript
AngularJS 依赖注入详解和简单实例
Jul 28 Javascript
深入理解Vue 单向数据流的原理
Nov 09 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
深入理解Vue Computed计算属性原理
May 29 Javascript
JS解惑之Object中的key是有序的么
May 06 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
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
python实现调用其他python脚本的方法
2014/10/05 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
对Python函数设计规范详解
2019/07/19 Python
python3实现绘制二维点图
2019/12/04 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
房产继承公证书
2014/04/09 职场文书
2014年师德承诺书
2014/05/23 职场文书
党员年度个人总结
2015/02/14 职场文书
九不准学习心得体会
2016/01/23 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫