详解vue mixins和extends的巧妙用法


Posted in Javascript onDecember 20, 2017

vue提供了mixins、extends配置项,最近使用中发现很好用。

混合mixins和继承extends

看看官方文档怎么写的,其实两个都可以理解为继承,mixins接收对象数组(可理解为多继承),extends接收的是对象或函数(可理解为单继承)。

继承钩子函数

const extend = {
 created () {
  console.log('extends created')
 }
}
const mixin1 = {
 created () {
  console.log('mixin1 created')
 }
}
const mixin2 = {
 created () {
  console.log('mixin2 created')
 }
}
export default {
 extends: extend,
 mixins: [mixin1, mixin2],
 name: 'app',
 created () {
  console.log('created')
 }
}

控制台输出

extends created
mixin1 created
mixin2 created
created
  • 结论: 优先调用mixins和extends继承的父类,extends触发的优先级更高,相对于是队列
  • push(extend, mixin1, minxin2, 本身的钩子函数)
  • 经过测试, watch的值 继承规则一样。

继承methods

const extend = {
 data () {
  return {
   name: 'extend name'
  }
 }
}
const mixin1 = {
 data () {
  return {
   name: 'mixin1 name'
  }
 }
}
const mixin2 = {
 data () {
  return {
   name: 'mixin2 name'
  }
 }
}
// name = 'name'
export default {
 mixins: [mixin1, mixin2],
 extends: extend,
 name: 'app',
 data () {
  return {
   name: 'name'
  }
 }
}
// 只写出子类,name = 'mixin2 name',extends优先级高会被mixins覆盖
export default {
 mixins: [mixin1, mixin2],
 extends: extend,
 name: 'app'
}
// 只写出子类,name = 'mixin1 name',mixins后面继承会覆盖前面的
export default {
 mixins: [mixin2, mixin1],
 extends: extend,
 name: 'app'
}
  • 结论:子类再次声明,data中的变量都会被重写,以子类的为准。
  • 如果子类不声明,data中的变量将会最后继承的父类为准。
  • 经过测试, props中属性 、 methods中的方法 和 computed的值 继承规则一样。

下面单独介绍下mixins、extends、extend

mixins

调用方式: mixins: [mixin1, mixin2]

是对父组件的扩充,包括methods、components、directive等。。。

触发钩子函数时,先调用mixins的函数,再调用父组件的函数。

虽然也能在创建mixin时添加data、template属性,但当父组件也拥有此属性时以父为准,从这一点也能看出制作者的用心(扩充)。

data、methods内函数、components和directives等键值对格式的对象均以父组件/实例为准

extends

调用方式: extends: CompA

同样是对父组件的扩充,与mixins类似,但优先级均次于父组件

extend

扩展组件的构造器

当我们调用vue.component('a', {...})时自动调用

值得注意的是extend内的data为一个函数

总结

以上所述是小编给大家介绍的vue mixins和extends的巧妙用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用脚本调用样式的几种方法
Dec 09 Javascript
24款非常有用的 jQuery 插件分享
Apr 06 Javascript
SOSO地图JS画出标注和中心点以html形式运行
Aug 09 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
Feb 16 Javascript
js验证框架实现代码分享
May 18 Javascript
详解vue+vueRouter+webpack的简单实例
Jun 17 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
让axios发送表单请求形式的键值对post数据的实例
Aug 11 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
微信小程序日历效果
Dec 29 Javascript
TypeScript中的方法重载详解
Apr 12 Javascript
canvas轨迹回放功能实现
Dec 20 #Javascript
jQuery实现动态控制页面元素的方法分析
Dec 20 #jQuery
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 #Javascript
浅谈gulp创建完整的项目流程
Dec 20 #Javascript
vue使用axios实现文件上传进度的实时更新详解
Dec 20 #Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 #Javascript
详解JS模块导入导出
Dec 20 #Javascript
You might like
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
Javascript学习指南
2014/12/01 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
python分割和拼接字符串
2013/11/01 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
python中format函数如何使用
2020/06/22 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
入党转预备思想汇报
2014/01/07 职场文书
加工操作管理制度
2014/01/19 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书