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 multibox 全选
Mar 22 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
vue页面使用阿里oss上传功能的实例(二)
Aug 09 Javascript
webpack+vue2构建vue项目骨架的方法
Jan 09 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
JavaScript文本特效实例小结【3个示例】
Dec 22 Javascript
原生js canvas实现鼠标跟随效果
Aug 02 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
JavaScript事件列表解说
2006/12/22 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python中多层嵌套列表的拆分方法
2018/07/02 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
Python pandas用法最全整理
2019/08/04 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
PyQt5实现登录页面
2020/05/30 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
pip install命令安装扩展库整理
2021/03/02 Python
酒店服务实习自我鉴定
2013/09/22 职场文书
一年级学生评语大全
2014/04/21 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
服装设计师求职信
2014/06/04 职场文书
学校学期工作总结
2015/08/13 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Python WSGI 规范简介
2021/04/11 Python