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判断元素是否是隐藏的代码
Apr 24 Javascript
基于jquery DOM写的类似微博发布的效果
Oct 20 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
浅析hasOwnProperty方法的应用
Nov 20 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
深入理解JavaScript中的并行处理
Sep 22 Javascript
javascript构造函数以及原型对象的理解
Jan 13 Javascript
ReactNative列表ListView的用法
Aug 02 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
vue项目中微信登录的实现操作
Sep 08 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
我常用的几个类
2006/10/09 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
检查php文件中是否含有bom的函数
2012/05/31 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
Bootstrap表单Form全面解析
2016/06/13 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
由面试题加深对Django的认识理解
2019/07/19 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
预备党员的自我评价
2014/03/12 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
违纪学生保证书
2015/02/27 职场文书
优质护理心得体会
2016/01/22 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技