期權合併

當 mixin 和元件本身包含重疊選項時,它們將使用適當的策略合併。例如,具有相同名稱的鉤子函式將合併到一個陣列中,以便呼叫所有這些函式。另外,mixin 鉤子將在元件自己的鉤子之前被呼叫 :

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"

期望物件值的選項(例如 methodscomponentsdirectives)將合併到同一物件中。當這些物件中存在衝突的鍵時,元件的選項將優先:

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() 中使用了相同的合併策略。