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 相关文章推荐
JS中剪贴板兼容性、判断复制成功或失败
Mar 09 Javascript
javascript中的绑定与解绑函数应用示例
Jun 24 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
深入浅出讲解ES6的解构
Aug 03 Javascript
JS实现留言板功能
Jun 17 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
May 31 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
canvas多重阴影发光效果实现
Apr 20 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中session跨子域的三种实现方法
2016/07/25 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
python最长回文串算法
2018/06/04 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python猜数字算法题详解
2020/03/01 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
机械专业毕业生推荐信范文
2013/11/25 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
军训拉歌口号
2014/06/13 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
个人授权委托书范本
2014/09/14 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
坎儿井导游词
2015/02/09 职场文书