如何将Mixin动态注入组件

我有一个需要根据接收到的道具进行混合的组件。

const timerMixin = {
    created() {
        console.log("Timer mixin injected")
    }
}

export default {
    name: 'Component A',
    props: ['hasTimer'],
    mixins: this.hasTimer ? [timerMixin] : [] // fails because `this` is not available here 
}

有没有一种方法可以将Mixin动态注入到组件中?

Stafan2020/04/07 11:15:27

不幸的是,当前没有办法动态地添加或删除组件的混合。this变种是不是可以在该范围。在最早的生命周期挂钩中beforeCreate已经加载了mixins。

在您的情况下,根据timerMixinmixin中的内容,使用具有相关逻辑的独立计时器组件可能会有意义,这些计时器组件可以动态加载到的模板中Component A

否则,始终加载mixin可能不会太糟(在性能方面),因为数据将是反应性的。