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 相关文章推荐
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
Oct 23 Javascript
node.js中的socket.io的广播消息
Dec 15 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
浅析jquery unbind()方法移除元素绑定的事件
May 24 Javascript
JS实现刷新父页面不弹出提示框的方法
Jun 22 Javascript
Angular2库初探
Mar 01 Javascript
利用Node.js对文件进行重命名
Mar 12 Javascript
JS设计模式之数据访问对象模式的实例讲解
Sep 30 Javascript
element-ui表格数据转换的示例代码
Aug 24 Javascript
详解vue 图片上传功能
Apr 30 Javascript
Vue页面跳转传递参数及接收方式
Sep 09 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 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网站地图生成类示例
2014/01/13 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
pyenv命令管理多个Python版本
2017/03/26 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
python字典操作实例详解
2017/11/16 Python
python类的实例化问题解决
2019/08/31 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
打架检讨书400字
2014/01/17 职场文书
财务部经理岗位职责
2014/02/03 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
教代会闭幕词
2015/01/28 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python