什么是Mixin混入
混入 (mixin) 是一种非常灵活的 Vue 组件中的可复用方式,一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
使用Mixin混入data
首先定义Minxin
const myMixin = {
data(){
return {
num: 1
}
}
};
然后使用mixins,在组件中使用之前定义好的myMixin
const app = Vue.createApp({
data(){
return {
num: 2
}
},
mixins:[myMixin],
template:`<div>{{num}}</div>`
})
打开浏览器页面渲染出组件的data数据。
将组件的data注释后,页面才渲染出Mixin混入的数据。
结论:==组件 data 优先级高于 Mixin 混入的 data==
使用Mixin混入钩子
在之前定义好的myMixin,写上钩子created,并在控制台输出:mixin created
created(){
console.log("mixin created");
}
在组件上也写上钩子created,并在控制台输出:created
created(){
console.log("created");
}
控制台输出:
结论:==先执行 Mixin 的钩子,再执行组件里的钩子==
使用Mixin混入方法
首先在组件模板绑定点击事件
template:`<div @click="handleClick">{{num}}</div>`
然后在Mixin和组件中写入响应事件的方法
//myMixin
methods:{
handleClick(){
console.log("mixin handleClick");
}
},
//组件
methods:{
handleClick(){
console.log("handleClick");
}
},
打开浏览器触发点击事件控制台输出:handleClick
将组件的方法注释后,再次触发点击事件,控制台输出:mixin handleClick
结论:==组件 methods方法 优先级高于 Mixin 混入的 methods方法==
总结
Mixin: 将多个组件相同的逻辑,抽离出来复用;
使用Mixin混入data: 组件 data 优先级高于 Mixin 混入的 data;
使用Mixin混入钩子: 先执行 Mixin 的钩子,再执行组件里的钩子;
使用Mixin混入方法: 组件 methods方法 优先级高于 Mixin 混入的 methods方法;
结语
本文到此结束
如果大家还有什么其他想法,欢迎在评论区交流!