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执行的方法
Feb 14 Javascript
jQuery实现鼠标可拖动调整表格列宽度
May 26 Javascript
js/jquery判断浏览器的方法小结
Sep 02 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
js控制TR的显示隐藏
Mar 04 Javascript
AngularJS基础 ng-include 指令简单示例
Aug 01 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 Javascript
详解Nuxt.js中使用Element-UI填坑
Sep 06 Javascript
使用js原生实现年份轮播选择效果实例
Jan 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中文字母数字验证码实现代码
2008/04/25 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python决策树分类算法学习
2017/12/22 Python
python字典快速保存于读取的方法
2018/03/23 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
迪拜航空官方网站:flydubai
2017/04/20 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
研究生自荐信
2013/10/09 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
《问银河》教学反思
2014/02/19 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
财产公证书
2014/04/10 职场文书
活动宣传策划方案
2014/05/23 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
国博复兴之路观后感
2015/06/02 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
如何优化vue打包文件过大
2022/04/13 Vue.js