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 相关文章推荐
JS启动应用程序的一个简单例子
May 11 Javascript
各种效果的jquery ui(接口)介绍
Sep 17 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
Mar 05 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
JavaScript事件委托实例分析
May 26 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
Aug 23 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
jQuery实现键盘回车搜索功能
Jul 25 jQuery
利用Blob进行文件上传的完整步骤
Aug 02 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 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使用curl存储cookie的示例
2014/03/31 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
PHP反射学习入门示例
2019/06/14 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Python实现获取操作系统版本信息方法
2015/04/08 Python
python实现求最长回文子串长度
2018/01/22 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python3 mmh3安装及使用方法
2019/10/09 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
python re模块常见用法例举
2021/03/01 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
求职信怎么写范文
2014/05/26 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
英语邀请函范文
2015/02/02 职场文书
六一儿童节致辞
2015/07/31 职场文书
python析构函数用法及注意事项
2021/06/22 Python