1:介绍:当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
a)组件引入父组件后,时单独开辟了一个区域,两者是两个独立的个体,通过props和事件emit进行联系
单纯组件引用:
父组件+子组件-->>父组件+子组件
b)而mixin是引入一个组件后,把引入的mixin组件跟当前的组件进行合并操作,当data里有相同的数据时,以组件的数据优先;当methods里面方法名有相同时,以组件的方法为优先。如下
mixin引用
mixin对象+组件-->>新组件
2:引入规则
a)相同的数据时,以组件的数据优先
var model = { data() { return { message: 'world', message1: 'china' } } }new Vue({ mixins: [model], data() { return { message1: 'sicuan', message2: 'chengdu' } }, created() { console.log(this.$data) } }) // { message1: "sicuan", message2: "chengdu", message: "world" } b)同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。 var model = { created() { console.log('混入对象的钩子被调用') } }
new Vue({ mixins: [model], created() { console.log('组件钩子被调用') } })
// => "混入对象的钩子被调用" // => "组件钩子被调用" c)值为对象的选项,例如methods,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。