首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mithril.js多css类

Mithril.js多css类
EN

Stack Overflow用户
提问于 2016-04-09 17:26:02
回答 3查看 2.3K关注 0票数 6

我是mithril.js的新手。我有一个div,我想添加类“无效”如果ctrl.invalid()==true,和“隐藏”如果ctrl.hidden()==true。

如果我使用m('div', {class: ctrl.invalid() ? 'invalid' : '', class: ctrl.hidden()? 'hidden' : ''}),它们就会相互覆盖。

我可以使用m('div', {class: [ctrl.invalid()?'invalid':'', ctrl.focused()?'focused':''].join(' ')}),它可以工作,但看起来很混乱。

有一个优雅的解决方案吗?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-11 00:25:25

我建议您使用类名 --这是一个简单的实用程序。您可以很好地定义您的类,它将为您合并所有内容。就你而言,情况将是:

代码语言:javascript
复制
const myMergedClasses = classNames({
    invalid: ctrl.invalid(), 
    focused: ctrl.focused()
});
m('div', { class: myMergedClasses })

很漂亮?!

票数 5
EN

Stack Overflow用户

发布于 2021-10-29 12:56:26

游戏很晚了,但作为对其他人的灵感,我经常做以下的事情,仅仅因为它是:

  • 易于实现
  • 易于扩展
  • 易懂
代码语言:javascript
复制
view(): {
    const classes = 
        `${ctrl.invalid() ? '.invalid' : ''}` +
        `${ctrl.hidden()? '.hidden' : ''}`;
    return m(`div${classes}`);
}
票数 1
EN

Stack Overflow用户

发布于 2018-01-08 17:27:59

您可以将助手方法添加到Mithril组件中:

代码语言:javascript
复制
const myComponent = {
    css() {
        // Add some logic

        return 'class1 class2';
    },
    view() {
        return m('div', { class: this.css() });
    },
};

或向控权人:

代码语言:javascript
复制
const ctrl = {
    css() {
        // Add some logic

        return 'class3';
    },
};

const myComponent = {
    view() {
        return m('div', { class: ctrl.css() });
    },
};

选择哪个更适合你的案子。

您还可以使用Ross Khanas在其答复中建议的类名实用程序:

代码语言:javascript
复制
const myComponent = {
    css() {
        return classNames({
            invalid: ctrl.invalid(), 
            focused: ctrl.focused(),
        });
    },
    view() {
        return m('div', { class: this.css() });
    },
};

或者:

代码语言:javascript
复制
const ctrl = {
    css() {
        return classNames({
            invalid: this.invalid(), 
            focused: this.focused(),
        });
    },
    invalid() { /* ... */ },
    focused() { /* ... */ },
};

const myComponent = {
    view() {
        return m('div', { class: ctrl.css() });
    },
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36520256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档