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 相关文章推荐
精通Javascript系列之Javascript基础篇
Jun 07 Javascript
JS获取url链接字符串 location.href
Dec 23 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 Javascript
Vue中之nextTick函数源码分析详解
Oct 17 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
ng-alain的sf如何自定义部件的流程
Jun 12 Javascript
vue.js封装switch开关组件的操作
Oct 26 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
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
Vue实现验证码功能
2019/12/03 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python封装shell命令实例分析
2015/05/05 Python
python装饰器与递归算法详解
2016/02/18 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python_LDA实现方法详解
2017/10/25 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
中专毕业生自我鉴定
2014/02/02 职场文书
运动会入场词60字
2014/02/15 职场文书
市场营销求职信范文
2014/02/21 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
太行山上观后感
2015/06/05 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
Python如何将list中的string转换为int
2022/07/15 Ruby
使用python生成大量数据写入es数据库并查询操作(2)
2022/09/23 Python