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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
基于JQuery实现的类似购物商城的购物车
Dec 06 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
Jul 31 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
Sep 12 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 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和MySQL保存和输出图片
2006/10/09 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
php Session无效分析资料整理
2016/11/29 PHP
实例讲解php实现多线程
2019/01/27 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
jQuery 操作XML入门
2008/12/25 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
javascript this详细介绍
2016/09/19 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python实现批量修改服务器密码的方法
2019/08/13 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
银行实习生的自我评价
2014/01/13 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
校长寄语大全
2014/04/09 职场文书
毕业生个人自荐书
2015/03/05 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
化妆品促销活动总结
2015/05/07 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang