详解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 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
javascript常用方法汇总
Dec 02 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
每日十条JavaScript经验技巧(一)
Jun 23 Javascript
jQuery根据name属性进行查找的用法分析
Jun 23 Javascript
jQueryUI Datepicker组件设置日期高亮
Oct 13 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
JavaScript实现数值自动增加动画
Dec 28 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
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
php生成gif动画的方法
2015/11/05 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
js tab效果的实现代码
2009/12/26 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
js验证密码强度解析
2020/03/18 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
jquery实现图片放大镜效果
2020/12/23 jQuery
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python 自动补全(vim)
2014/11/30 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
Python中交换两个元素的实现方法
2018/06/29 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
python 高阶函数简单介绍
2021/02/19 Python
迷你西餐厅创业计划书范文
2013/12/31 职场文书
购房协议书
2014/04/11 职场文书
公司委托书格式范文
2014/10/09 职场文书
高温慰问简报
2015/07/21 职场文书
聘任书格式及范文
2015/09/21 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android