基础
混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组建本身的选项。
![](https://img.haomeiwen.com/i15616233/ff41f3df5fb41e44.png)
选项合并
当组件和混入对象含有同名选项是,这些选项将以恰当的方式进行‘合并’。
比如: 数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。
![](https://img.haomeiwen.com/i15616233/c816518ae9970616.png)
同名钩子函数将合并为一个数组,因此都将被调用,另外,混入的钩子将在组件自身钩子之前调用。
![](https://img.haomeiwen.com/i15616233/eb5db718d1a647de.png)
值为对象的选项,例如 methods,components 和directives, 将被合并为同一个对象,两个对象键名冲突时,取组件的键值对。
注意:Vue.extend()也使用同样的策略。
全局混入
混入也可以进行全局注册。使用时要格外小心,一旦使用全局混入,他将影响每一个之后创建的Vue实例。使用恰当是,这可以用来为自定义选项注入处理逻辑。(自定义选项)
![](https://img.haomeiwen.com/i15616233/0128744b38545cb3.png)
![](https://img.haomeiwen.com/i15616233/890cbb48dd8c12ca.png)
自定义选项合并策略
自定义选项将使用默认策略,即简单地覆盖已有值。如果想让自定义选项已自定义逻辑合并,可以向Vue.config.optionMergeStrategies添加一个函数:Vue.config.iotionMergeStrategies.myOption(自定义选项名) = function(toVal, fromVal) { // 返回合并后的值 }
对于多数值为对象的选项,也已使用与methods相同的合并策略:
var strategies = Vue.config.optionMergeStrategies
strategies.myOption(自定义选项名) = strategies.methods
![](https://img.haomeiwen.com/i15616233/786196c043c0fa70.png)
网友评论