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 相关文章推荐
qTip 基于JQuery的Tooltip插件[兼容性好]
Sep 01 Javascript
用javascript作一个通用向导说明
Aug 30 Javascript
学习Angularjs分页指令
Jul 01 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
js正则表达式验证表单【完整版】
Mar 06 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
Jul 31 Javascript
javascript帧动画(实例讲解)
Sep 02 Javascript
vue组件学习教程
Sep 09 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 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数组去除空值函数分享
2015/02/02 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
快速入门Vue
2016/12/19 Javascript
js实现返回顶部效果
2017/03/10 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
react 生命周期实例分析
2020/05/18 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python与字符编码问题
2019/05/24 Python
Python如何省略括号方法详解
2020/03/21 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
骨干教师培训制度
2014/01/13 职场文书
校运会入场式解说词
2014/02/10 职场文书
开业庆典主持词
2014/03/21 职场文书
爱之链教学反思
2014/04/30 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014年人事部工作总结
2014/12/03 职场文书
小学中等生评语
2014/12/29 职场文书
运动会表扬稿
2015/01/16 职场文书
旗帜观后感
2015/06/08 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
简述Java中throw-throws异常抛出
2021/08/07 Java/Android