vue中的provide/inject的学习使用


Posted in Javascript onMay 09, 2018

前言

最近在看element-ui的源码,发现了一个这样的属性:inject.遂查看官网provider/inject

provider/inject:简单的来说就是在父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量。

需要注意的是这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。

下面我们来验证下猜想:

first:定义一个parent component

<template>
 <div>
<childOne></childOne>
 </div>
</template>

<script>
 import childOne from '../components/test/ChildOne'
 export default {
  name: "Parent",
  provide: {
   for: "demo"
  },
  components:{
   childOne
  }
 }

在这里我们在父组件中provide for这个变量。

second 定义一个子组件

<template>
 <div>
  {{demo}}
  <childtwo></childtwo>
 </div>
</template>

<script>
 import childtwo from './ChildTwo'
 export default {
  name: "childOne",
  inject: ['for'],
  data() {
   return {
    demo: this.for
   }
  },
  components: {
   childtwo
  }
 }
</script>

third 定义另一个子组件

<template>
 <div>
  {{demo}}
 </div>
</template>

<script>
 export default {
  name: "",
  inject: ['for'],
  data() {
   return {
    demo: this.for
   }
  }
 }
</script>

在2个子组件中我们使用jnject注入了provide提供的变量for,并将它提供给了data属性。

这里官网注明例子只工作在 Vue 2.2.1 或更高版本。低于这个版本时,注入的值会在 props 和 data 初始化之后得到。

运行之后看下结果

vue中的provide/inject的学习使用

从上面这个例子可以看出,只要在父组件中调用了,那么在这个父组件生效的生命周期内,所有的子组件都可以调用inject来注入父组件中的值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 函数调用模式小结
Dec 26 Javascript
用jquery生成二级菜单的实例代码
Jun 24 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
Javascript表格翻页效果实现思路及代码
Aug 23 Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 Javascript
JavaScript数组各种常见用法实例分析
Aug 04 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
详解Vue 多级组件透传新方法provide/inject
May 09 #Javascript
自定义vue组件发布到npm的方法
May 09 #Javascript
React Navigation 使用中遇到的问题小结
May 08 #Javascript
官方推荐react-navigation的具体使用详解
May 08 #Javascript
JavaScript callback回调函数用法实例分析
May 08 #Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 #Javascript
vue-cli 引入、配置axios的方法
May 08 #Javascript
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python完全新手教程
2007/02/08 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
Python的logging模块基本用法
2020/12/24 Python
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
校长师德表现自我评价
2015/03/04 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
高一数学教学反思
2016/02/18 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
600字作文之感受大自然
2019/11/27 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang