博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue混合mixins
阅读量:7182 次
发布时间:2019-06-29

本文共 1865 字,大约阅读时间需要 6 分钟。

前面的话

  本文将详细介绍Vue混合mixins

 

概述

  混合 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项

// 定义一个混合对象var myMixin = {  created: function () {    this.hello()  },  methods: {    hello: function () {      console.log('hello from mixin!')    }  }}// 定义一个使用混合对象的组件var Component = Vue.extend({  mixins: [myMixin]})var component = new Component() // -> "hello from mixin!"

 

选项合并

  当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合。比如,同名钩子函数将混合为一个数组,因此都将被调用。另外,混合对象的钩子将在组件自身钩子之前调用 :

var mixin = {  created: function () {    console.log('混合对象的钩子被调用')  }}new Vue({  mixins: [mixin],  created: function () {    console.log('组件钩子被调用')  }})// -> "混合对象的钩子被调用"// -> "组件钩子被调用"

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

var mixin = {  methods: {    foo: function () {      console.log('foo')    },    conflicting: function () {      console.log('from mixin')    }  }}var vm = new Vue({  mixins: [mixin],  methods: {    bar: function () {      console.log('bar')    },    conflicting: function () {      console.log('from self')    }  }})vm.foo() // -> "foo"vm.bar() // -> "bar"vm.conflicting() // -> "from self"

  [注意] Vue.extend() 也使用同样的策略进行合并

 

全局混合

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

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

  [注意]一定要谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。 也可以将其用作插件以避免产生重复应用

 

自定义选项混合策略

  自定义选项将使用默认策略,即简单地覆盖已有值。 如果想让自定义选项以自定义逻辑混合,可以向Vue.config.optionMergeStrategies 添加一个函数:

Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) {  // return mergedVal}

  对于大多数对象选项,可以使用 methods 的合并策略:

var strategies = Vue.config.optionMergeStrategiesstrategies.myOption = strategies.methods

 

转载地址:http://fuozm.baihongyu.com/

你可能感兴趣的文章
c# 启动的时候向其他程序传值
查看>>
Openresty+redis实现灰度发布
查看>>
DOM对象与Jquery对象区别
查看>>
第34天:日期函数、定时器、倒计时
查看>>
Scala - 正则表达式匹配例子
查看>>
C#操作XML增删改查
查看>>
Java 的 Api 文档生成工具 JApiDocs 程序文档工具
查看>>
SRF 认证
查看>>
作业一
查看>>
第二篇 创建Windows 8 Metro Style app应用程序
查看>>
tyvj 2054 [Nescafé29]四叶草魔杖——最小生成树+状压dp
查看>>
valid sudoku leetcode
查看>>
gcc -c -o命令的区别
查看>>
莫烦大大TensorFlow学习笔记(9)----可视化
查看>>
第十周进度条
查看>>
IIS服务器WEB访问资源文件要求登录
查看>>
在ubuntu中启用ftp服务
查看>>
c基础总结
查看>>
python property装饰器
查看>>
ceph 之cgroup
查看>>