Vue使用mixin分发组件的可复用功能


Posted in Javascript onSeptember 01, 2019

vue创建高阶组件的实现不够react优雅,但那是vue和react的设计思想导致的。在react中一切都是函数,而在vue中,组件最终都是函数,但在开发时可以是JSON对象,而且每个vue组件要注意三个点:props、events和slots,就是这三个导致vue创建高阶组件时要传入相应的属性,较react要复杂。

vue官方推荐使用mixins来完成高阶组件的功能,如果对vue实现高阶组件有兴趣的话推荐看[vue实现高阶组件][1]

下面是vue官网使用mixins的例子:

// 定义一个混入对象
var myMixin = {
 created: function () {
  this.hello()
 },
 methods: {
  hello: function () {
   console.log('hello from mixin!')
  }
 }
}

// 定义一个使用混入对象的组件
var Component = Vue.extend({
 mixins: [myMixin]
})

var component = new Component() // => "hello from mixin!"

每个vue组件有mixins属性接收mixin数组,但由于mixin与组件,mixin与mixin之间存在属性命名冲突的问题,vue解决这个的方式是:

1 数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。

2 值为对象的选项,例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。

3 Vue.extend()和new Vue()创建的组件,解决上述的命名冲突的方案是一样的。

总结

以上所述是小编给大家介绍的Vue使用mixin分发组件的可复用功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
js重写方法的简单实现
Jul 10 Javascript
Node.js查找当前目录下文件夹实例代码
Mar 07 Javascript
angular.fromJson与toJson方法用法示例
May 17 Javascript
在vscode中统一vue编码风格的方法
Feb 22 Javascript
bootstrap Table实现合并相同行
Jul 19 Javascript
小程序新版订阅消息模板消息
Dec 31 Javascript
Flexible.js可伸缩布局实现方法详解
Nov 13 Javascript
js实现验证码干扰(动态)
Feb 23 Javascript
JavaScript页面加载事件实例讲解
Sep 01 #Javascript
Node.js安装详细步骤教程(Windows版)详解
Sep 01 #Javascript
vue组件命名和props命名代码详解
Sep 01 #Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 #Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 #Javascript
vue中的v-if和v-show的区别详解
Sep 01 #Javascript
react中Suspense的使用详解
Sep 01 #Javascript
You might like
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
python中异常捕获方法详解
2017/03/03 Python
TensorFlow变量管理详解
2018/03/10 Python
Python中按值来获取指定的键
2019/03/04 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
学生自我鉴定
2013/12/18 职场文书
出生证明公证书
2014/04/09 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
校园文明标语
2014/06/13 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL