Vue中的混入的使用(vue mixins)


Posted in Javascript onJune 01, 2018

使用场景:

例如我们在Vue单页面开发的时候当多个组件中都需要下拉刷新,或者使用的都是一个方法的时候,我们就可以使用vue mixins进行封装调用,以及继承,具体看代码。

选项合并

var mixin = {
        data: function () {
        return {
         message: 'hello'
        }
       },
       created:function(){
        console.log('我是mixins中的created')
       },
       methods:{
        show:function(num){
          console.log(num) //mixins种的函数可以接收组件种的传参。
        },
        foo: function () {
         console.log('foo')
        },
        conflicting: function () {
         console.log('from mixin')
        }
       }
      }

      var vm = new Vue({
       mixins: [mixin],
       data: function () {
        return {
         title: 'def',
         message: 'goodbye'
        }
       },
       created: function () {
        console.log('我是Vue中的created')
        console.log(this.$data)
        this.show(50); //可通过函数传参,把组件中需要的参数传给mixins进行使用。
       },
       methods:{
        bar: function () {
         console.log('bar')
        },
        conflicting: function () {
         console.log('from self')
        }
       }
      })
      
      vm.foo() // => "foo"
      vm.bar() // => "bar"
      vm.conflicting() // => "from self"

注意以下三点:

1、当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。比如,数据对象在内部会进行浅合并 (一层属性深度),在和组件的数据发生冲突时以组件数据优先。

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

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

全局混入

也可以全局注册混入对象。注意使用! 一旦使用全局混入对象,将会影响到 所有 之后创建的 Vue 实例。使用恰当时,可以为自定义对象注入处理逻辑。

//为自定义的选项 'myOption' 注入一个处理器。
Vue.mixin({
 created: function () {
  var myOption = this.$options.myOption
  if (myOption) {
   console.log(myOption)
  }
 }
})

new Vue({
 myOption: 'hello!'
})
// => "hello!"

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

Javascript 相关文章推荐
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
Jul 11 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
使用webpack搭建vue项目实现脚手架功能
Mar 15 Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 #Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 #Javascript
Express之托管静态文件的方法
Jun 01 #Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 #Javascript
详解Angular操作cookies方法
Jun 01 #Javascript
浅谈手写node可读流之流动模式
Jun 01 #Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 #Javascript
You might like
php字符串截取问题
2006/11/28 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
复选框全选与全不选操作实现思路
2013/08/18 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JS实现的数组全排列输出算法
2015/03/19 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
大型活动策划方案
2014/01/12 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
小区推广策划方案
2014/06/06 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
2015年新教师工作总结
2015/04/28 职场文书
工作时间证明
2015/06/15 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
Mysql如何查看是否使用到索引
2022/12/24 MySQL