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 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
jQuery中:animated选择器用法实例
Dec 29 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
Feb 17 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
JavaScript代码执行的先后顺序问题
Oct 29 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
Angular17之Angular自定义指令详解
Jan 21 Javascript
Angular网络请求的封装方法
May 22 Javascript
JavaScript实现更换背景图片
Oct 18 Javascript
在Vue中使用antv的示例代码
Jun 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
javascript基础知识讲解
2017/01/11 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
Python Requests 基础入门
2016/04/07 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
python中如何进行连乘计算
2020/05/28 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
党员一句话承诺大全
2014/03/28 职场文书
教师求职信范文
2014/05/24 职场文书
留守儿童工作方案
2014/06/02 职场文书
《学会看病》教学反思
2016/02/17 职场文书
如何写好开幕词?
2019/06/24 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
GO中sync包自由控制并发示例详解
2022/08/05 Golang