目录
- 基础使用
- 选项合并
- 自定义合并规则
- 全局混入
- 总结
什么是混入?
混入通过注入配置项到vue实例用来提升复用性
基础使用
const myMixin = {
created: function () {
this.hello();
},
methods: {
hello: function () {
console.log('hello from mixin');
},
},
};
var vm = new Vue({
el: '#app',
mixins: [myMixin],
});
选项合并
选项合并发生在下面两种情况
- mixins接收的是一个数组,mixin中的属性冲突时会发生合并
- mixin属性和组件原有属性冲突时
const myMixin = {
created: function () {
this.hello();
},
methods: {
hello: function () {
console.log('hello from mixin');
},
},
};
var vm = new Vue({
el: '#app',
mixins: [myMixin],
created: function () {
this.hello();
},
methods: {
hello: function () {
console.log('hello from vue instance');
},
},
});

上述两种的选项合并规则是相同的:
- 周期钩子冲突的时候,会合并成数组都保留,执行顺序是先执行minxi的钩子,再执行组件上的钩子
- methods、computed这类值为对象的选项在冲突的时候以组件属性为准
自定义合并规则
除了使用上述默认的合并规则,还可以通过Vue.config.optionMergeStrategies自定义合并规则。
Vue.config.optionMergeStrategies.myMixin=(toVal, fromVal){
//返回合并的值
};
通常对于值为对象的属性我们可以借用已有的合并规则
//借用methods的规则 Vue.config.optionMergeStrategies.myMixin=Vue.config.optionMergeStrategies.methods;
全局混入
混入也可以全局注册,使用时候要格外小心,它会影响到每一个组件/实例
Vue.mixin({
created: function () {
console.log('mixin created');
},
});
var vm1 = new Vue(...);
var vm2 = new Vue(...);
总结
- mixin混入通过注入配置项到vue实例提升复用性
- 属性冲突时以组件内的属性为准,声明周期的钩子会保留多个
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)