Vue之Mixins(混入)的使用方法


Posted in Javascript onSeptember 24, 2019

混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。

比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。

var Mymixin = {
  data: function(){
   return {
    message: 'hello',
    foo: 'abc'
   }
  }
}
 export default {
  mixins:[Mymixin],
  data(){
   return{
    message:'good',
    bar:'kiss'
   }
   
  },
  created(){
   console.log(this.$data) //bar: "kiss",foo: "abc",message: "good"
  },

同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。

<script>
var Mymixin = {
  created: function(){
   console.log('混入对象的钩子被调用')
  }
}
 export default {
  mixins:[Mymixin],
  data(){
   return{
    message:'good',
    bar:'kiss'
   }
   
  },
  created(){
   console.log('组件钩子被调用') 
   // 混入对象的钩子被调用
   // 组件钩子被调用
  }
 }
</script>

值为对象的选项,

例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。

<script>
var Mymixin = {
  methods: {
   foo: function(){
    console.log('foo')
   },
   conflicting: function(){
    console.log('from mixin')
   }
  }
}
 export default {
  mixins:[Mymixin],
  created(){
   this.foo()
   this.conflicting()
   this.bar() 
   // foo
   // from self
   // bar
  },
  methods:{
   bar:function(){
    console.log('bar')
   },
   conflicting: function(){
      console.log('from self')
   }
  }
 }
</script>

全局混入

混入也可以进行全局注册。使用时格外小心!一旦使用全局混入,它将影响每一个之后创建的 Vue 实例。使用恰当时,这可以用来为自定义选项注入处理逻辑。

// 为自定义的选项 'myOption' 注入一个处理器。可在main.js中写入
Vue.mixin({
 created: function () {
  var myOption = this.$options.myOption
  if (myOption) {
   console.log(myOption)
  }
 }
})
在任意组件里面都可以使用
new Vue({
 myOption: 'hello!'
})
// => "hello!"
export default {
  myOption: 'hello!',
 }

请谨慎使用全局混入,因为它会影响每个单独创建的 Vue 实例 (包括第三方组件)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。推荐将其作为插件发布,以避免重复应用混入。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
详解自定义ajax支持跨域组件封装
Feb 08 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
Feb 01 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 Javascript
vue 实现单选框设置默认选中值
Nov 07 Javascript
ajax请求前端跨域问题原因及解决方案
Oct 16 Javascript
JavaScript Array对象使用方法解析
Sep 24 #Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 #Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
Sep 24 #Javascript
基于layui的下拉列表的数据回显方法
Sep 24 #Javascript
Layui动态生成select下拉选择框不显示的解决方法
Sep 24 #Javascript
layui动态渲染生成select的option值方法
Sep 23 #Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 #Javascript
You might like
PHP 高级课程笔记 面向对象
2009/06/21 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
PHP基本语法总结
2014/09/06 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
python issubclass 和 isinstance函数
2019/07/25 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
C#面试常见问题
2013/02/25 面试题
车间主管岗位职责
2013/11/14 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
租赁协议书
2015/01/27 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
刘胡兰观后感
2015/06/16 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
小学数学教师研修日志
2015/11/13 职场文书