Mixin
混入(Mixin),用来分发Vue组件中可复用的功能;将组件的公共逻辑或者配置提取出来,哪个组件需要用到时,直接将提取的这部分混入到组件内部即可。这样既可以减少代码冗余度,也可以让后期维护起来更加容易。
- 使用方式: 局部混入(
mixins: [xxxx]
)、全局混入(VUe.mixin(options)
);Vue3中没有Mixin,通过hook抽离公共代码逻辑,按需引入。 - 注意事项: 当组件存在于Mixin对象相同选项时,进行递归合并(Mixin里可能还有Mixin)的时候,组件选项会覆盖Mixin的选项,不同的选项有不同的合并规则。
- 合并策略:
- 替换型:
props
、methods
、computed
、inject
,将新的同名参数替代旧的参数。 - 合并型:
data
,通过set方法进行合并和重新赋值。 - 队列型:生命周期钩子、
watch
,将回调函数存入数组,然后正序遍历执行。 - 叠加型:
component
、directives
、filters
,通过原型链进行层层叠加。
- 替换型:
- 存在问题:
- 容易命名冲突。
- 不同选项的合并策略不同,容易出错。
- 数据来源不明,不好追溯,排查问题困难。