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 相关文章推荐
JScript中的"this"关键字使用方式补充材料
Mar 08 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
javascript自定义函数参数传递为字符串格式
Jul 29 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
jQuery大于号(>)选择器的作用解释
Jan 13 Javascript
详解JavaScript对W3C DOM模版的支持情况
Jun 16 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 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使用memcache存储session的详解
2013/06/25 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
常用的javascript设计模式
2017/01/11 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python实现倒计时的示例
2014/02/14 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
python如何删除文件、目录
2020/06/23 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
英语专业毕业生自我鉴定
2013/11/09 职场文书
车间班组长的职责
2013/12/13 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang