详解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 相关文章推荐
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
jquery实现通用版鼠标经过淡入淡出效果
Jun 15 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
JS匿名函数类生成方式实例分析
Nov 26 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
JavaScript 作用域scope简单汇总
Oct 23 Javascript
jquery实现购物车基本功能
Oct 25 jQuery
自定义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
是否存在第一台收音机的说法
2021/03/01 无线电
PHP+DBM的同学录程序(4)
2006/10/09 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
理解Koa2中的async&await的用法
2018/02/05 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
对python周期性定时器的示例详解
2019/02/19 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
华为的Java面试题
2014/03/07 面试题
销售总监岗位职责
2014/01/04 职场文书
学年个人总结范文
2015/03/05 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python