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 相关文章推荐
document.documentElement的一些使用技巧
Apr 18 Javascript
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
js原生跨域_用script标签的简单实现
Sep 24 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
Dec 20 Javascript
AngularJS 单选框及多选框的双向动态绑定
Apr 20 Javascript
详解javascript设计模式三:代理模式
Mar 25 Javascript
微信小程序wx.request拦截器使用详解
Jul 09 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 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 第二节 数据类型之转换
2012/04/28 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
PHP 文件系统详解
2012/09/13 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
深入解析php中的foreach问题
2013/06/30 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
php验证码实现代码(3种)
2015/09/07 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
jQuery 1.0.2
2006/10/11 Javascript
window.open()弹出居中的窗口
2007/02/01 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
vue-cli配置全局sass、less变量的方法
2019/06/06 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python yield的用法实例分析
2020/03/06 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
竞选文艺委员演讲稿
2014/04/28 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
党建工作汇报材料
2014/12/24 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL