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 相关文章推荐
基于jquery的拖动布局插件
Nov 25 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
May 04 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
使用微信SDK自定义分享的方法
Jul 03 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
JavaScript实现省份城市的三级联动
Feb 11 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
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 数组的一个悲剧?
2011/05/11 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
Python生成验证码实例
2014/08/21 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
Python检查ping终端的方法
2019/01/26 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
使用python创建Excel工作簿及工作表过程图解
2020/05/27 Python
python的flask框架难学吗
2020/07/31 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
意大利在线药房:Saninforma
2021/02/11 全球购物
总经理驾驶员岗位职责
2013/12/04 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
毕业证委托书范文
2014/09/26 职场文书
运动会宣传稿100字
2015/07/23 职场文书
小学语文教师研修感悟
2015/11/18 职场文书