vue中的混入mixin
文章类型:Vue
发布者:hp
发布时间:2022-08-10
在实际开发中,部分数据,方法会被重复性使用,那么,我们就需要进行混入,官方提供两种方式,全局混入和局部混入,
mixins它就是一个对象,这个对象里面可以包含Vue组件中的一些常见配置,如data、methods、created等等
今天,我们整理下vue2中混入和vue3中的混入方式
一:vue2版本
局部方式,通过mixins属性实现
export const mixins = {
data() {
return {
msg: "我是小白",
};
},
computed: {},
methods: {
clickMe() {
console.log("我是mixin中的点击事件");
},
},
};
import { mixins } from "./mixin/index";
mixins: [mixins],
全局方式,直接挂载在原型上,(会影响每个单独创建的 Vue 实例 (包括第三方组件))
import { mixins } from "./mixin/index";
Vue.mixin(mixins);
二:vue3版本,采用函数式编程,用js方式写
export default function getHomeMixin(source: string) {
let name = ref<string>('小白');
const componentName = source
const handleChangeName = (transmitName: string) => {
name.value = transmitName
}
return {
name,
componentName,
handleChangeName
}
}
<script setup lang="ts">
import getHomeMixin from './homeMixin'
const Mixin = getHomeMixin('我是A组件传的值');
</script>
三:优缺点
1:优点
A:提高代码复用性
B:无需传递状态
C:维护方便
2:缺点
A:命名冲突
B:滥用会导致维护困难
C:追溯源、排查问题麻烦
D:不能轻易重复代码
四:注意点
1:mixins 中的data数据与组件中的data数据冲突时,组件中的data数据会覆盖mixin中数据
2:默认合并策略下,先执行mixin中生命周期函数中的代码,再执行组件内部的代码(钩子函数不会覆盖,但是methods会覆盖)