期權合併
當 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"
期望物件值的選項(例如 methods
,components
和 directives
)將合併到同一物件中。當這些物件中存在衝突的鍵時,元件的選項將優先:
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()
中使用了相同的合併策略。