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 相关文章推荐
由prototype_1.3.1进入javascript殿堂-类的初探
Nov 06 Javascript
jquery键盘事件介绍
Jan 31 Javascript
JS定时关闭窗口的实例
May 22 Javascript
jquery自定义下拉列表示例
Apr 25 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
AngularJS入门教程之Select(选择框)详解
Jul 27 Javascript
谈谈Vue.js——vue-resource全攻略
Jan 16 Javascript
vue实现模态框的通用写法推荐
Feb 26 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 Javascript
javascript中UMD规范的代码推演
Aug 29 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
python实现八大排序算法(1)
2017/09/14 Python
python实现猜单词小游戏
2020/05/22 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
乌克兰在线药房:Аптека24
2019/10/30 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
大学军训感言1000字
2014/02/25 职场文书
贷款委托书范本
2014/04/08 职场文书
论文评语大全
2014/04/29 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
学校运动会开幕词
2016/03/03 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python