如何将Mixin动态注入组件

vue.js Vue.js

老丝

2020-04-07

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

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动态注入到组件中?

第4057篇《如何将Mixin动态注入组件》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

1个回答
Stafan 2020.04.07

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

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

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

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android