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