Zoeken…


Wereldwijde mixin

Je kunt ook een mixin wereldwijd toepassen. Wees voorzichtig! Als je een mixin wereldwijd toepast, heeft dit invloed op elke Vue-instantie die daarna wordt gemaakt. Bij correct gebruik kan dit worden gebruikt om verwerkingslogica te injecteren voor aangepaste opties:

// inject a handler for `myOption` custom option
Vue.mixin({
  created: function () {
    var myOption = this.$options.myOption
    if (myOption) {
      console.log(myOption)
    }
  }
})

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

Gebruik mondiale mixins spaarzaam en zorgvuldig, omdat dit elke gemaakte Vue-instantie beïnvloedt, inclusief componenten van derden. In de meeste gevallen dient u het alleen te gebruiken voor het verwerken van aangepaste opties, zoals in het bovenstaande voorbeeld is aangetoond.

Aangepaste optie strategieën samenvoegen

Wanneer aangepaste opties worden samengevoegd, gebruiken ze de standaardstrategie, die eenvoudigweg de bestaande waarde overschrijft. Als u een aangepaste optie wilt samenvoegen met behulp van aangepaste logica, moet u een functie koppelen aan Vue.config.optionMergeStrategies :

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

Voor de meeste objectgebaseerde opties kunt u eenvoudigweg dezelfde strategie gebruiken die door methods :

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

Basics

Mixins zijn een flexibele manier om herbruikbare functionaliteiten voor Vue-componenten te distribueren. Een mixin-object kan alle componentopties bevatten. Wanneer een component een mixin gebruikt, worden alle opties in de mixin "gemengd" in de eigen opties van de component.

// define a mixin object
var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    }
  }
}

// define a component that uses this mixin
var Component = Vue.extend({
  mixins: [myMixin]
})

var component = new Component() // -> "hello from mixin!"

Optie samenvoegen

Wanneer een mixin en de component zelf overlappende opties bevatten, zullen ze worden "samengevoegd" met behulp van geschikte strategieën. Haakfuncties met dezelfde naam worden bijvoorbeeld samengevoegd in een array zodat ze allemaal worden aangeroepen. Bovendien worden mixin-hooks aangeroepen vóór de eigen hooks van de component:

var mixin = {
  created: function () {
    console.log('mixin hook called')
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log('component hook called')
  }
})

// -> "mixin hook called"
// -> "component hook called"

Opties die objectwaarden verwachten, bijvoorbeeld methods , components en directives , worden samengevoegd in hetzelfde object. De opties van de component hebben voorrang wanneer er conflicterende sleutels zijn in deze objecten:

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"

Merk op dat dezelfde samenvoegstrategieën worden gebruikt in Vue.extend() .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow