作者:leedaning | 来源:互联网 | 2022-12-01 13:57
美好的一天研究员,
快速摘要:如何在每个组件的基础上单独使用自定义选项合并策略而不是全局?
我的问题:我通过Mixins扩展我的组件,它到目前为止工作得很好.然而,虽然它与组件方法一样工作得很好,但我经常需要覆盖一些生命周期钩子,比如挂载,创建等等.捕获是,Vue - 默认情况下 - 将它们排成队列并在另一个之后调用它们.这当然是由Vues默认合并策略定义的.
但是在某些特定情况下,我确实需要覆盖钩子而不是堆叠.我知道我可以根据自己的喜好自定义Vue.config.optionMergeStrategies,但我希望在每个组件的基础上自定义mergeStrategy,而不是全局应用它.
我在纸上的天真方法是创建一个更高的函数来存储原始钩子,应用我的自定义策略,调用我的组件体,然后恢复Vues原始钩子.
让我们这样说吧
export default function executeWithCustomMerge(fn) {
const orig = deep copy Vue.config.optionMergeStrategies;
Vue.config.optionMergeStrategies.mounted = (parent, child) => [child];
fn();
Vue.config.optiOnMergeStrategies= deep copy orig;
}
这就是它的实际应用
executeWithCustomMerge(() => {
Vue.component('new-comp', {
mixins: [Vue.component("old-comp")],
},
mounted() {
//i want to override my parent thus I am using a custom merge strategy
});
});
现在,这不会有用,因为恢复原始的钩子策略仍然适用于全局,并且在调用我的组件上的大多数钩子之前将被重置.
我想知道我需要做什么才能将合并策略扩展到组件.