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下异步提交表单 异步跨域提交表单
Nov 17 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
js中iframe调用父页面的方法
Oct 30 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
轻松理解vue的双向数据绑定问题
Oct 30 Javascript
React路由管理之React Router总结
May 10 Javascript
微信小程序使用form表单获取输入框数据的实例代码
May 17 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
Jquery如何使用animation动画效果改变背景色的代码
Jul 20 jQuery
vue实现图片裁剪后上传
Dec 16 Vue.js
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
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
Python 调用Java实例详解
2017/06/02 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python实现微信机器人的方法
2019/09/06 Python
Pytorch之contiguous的用法
2019/12/31 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
python实现批处理文件
2020/07/28 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
学习党的群众路线对照检查材料
2014/09/29 职场文书
一年级语文教学随笔
2015/08/14 职场文书
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL