详解Vue 多级组件透传新方法provide/inject


Posted in Javascript onMay 09, 2018

provide / inject 是 2.2 新增的方法,可以以一个祖先组件向所有子孙后代注入依赖(一个内容)。

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

Vue 官方警告:

provide 和 inject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。

当然,警告只是警告,你完全可以正常使用。

使用方法非常像 data 和 props 的组合大礼包:

var Provider = {
 provide: {
 foo: 'bar'
 },
 // ...
}
var Child = {
 inject: ['foo'],
 created () {
 console.log(this.foo) // => "bar"
 }
 // ...
}

唯一的区别是你不用再一层层的传入了,过去用的 event-bus 虽然可以解决深层问题,但是会导致整个 event-emit 组成过于混乱,难以维护。使用 provide / inject 可以保证父子单向数据流的清晰性。

在 React 中 Context 的 Provider / Consumer 也有相同的效果,由于还没有具体使用过,对 React 本身也只有一面之缘,留待以后在了解,感兴趣的同学可以 阅读文档 了解。

参考文章:

Vue 官方文档
Provide/Inject in Vue 2.2

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

Javascript 相关文章推荐
js 利用className得到对象的实现代码
Nov 15 Javascript
jquery入门—编写一个导航条(可伸缩)
Jan 07 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
Vue.js实现网格列表布局转换方法
Aug 25 Javascript
vue项目中使用ueditor的实例讲解
Mar 05 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
Sep 29 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
详解vue中localStorage的使用方法
Nov 22 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 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
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 #Javascript
You might like
星际争霸任务指南——人族
2020/03/04 星际争霸
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
Python生成器(Generator)详解
2015/04/13 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
详解python metaclass(元类)
2020/08/13 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
粗加工管理制度
2014/02/04 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
2014年新生军训方案
2014/05/01 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
2014年度培训工作总结
2014/11/27 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2014年路政工作总结
2014/12/10 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书