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 相关文章推荐
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 Javascript
JavaScript设计模式之代理模式介绍
Dec 28 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
js操作数据库实现注册和登陆的简单实例
May 26 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
javscript 数组扁平化的实现
Feb 03 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 Javascript
JavaScript流程控制(分支)
Dec 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
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP计数器的实现代码
2013/06/08 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
10条php编程小技巧
2015/07/07 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
php生出随机字符串
2017/07/06 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Python编程中time模块的一些关键用法解析
2016/01/19 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
Python3 读取Word文件方式
2020/02/13 Python
Python实现汇率转换操作
2020/05/03 Python
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
省优秀教师事迹材料
2014/01/30 职场文书
军人违纪检讨书
2014/02/04 职场文书
企业承诺书格式范文
2015/04/28 职场文书