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 相关文章推荐
JavaScript访问样式表代码
Oct 15 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 Javascript
Javascript获取HTML静态页面参数传递值示例
Aug 18 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 Javascript
Vue SPA 首屏优化方案
Feb 26 Vue.js
详解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
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
python数据预处理方式 :数据降维
2020/02/24 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
企业文化口号
2014/06/12 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
Python实现双向链表基本操作
2022/05/25 Python