有条件地在具有json-style定义的React组件上应用样式

时间:2019-10-28 05:36:08

标签: reactjs

我有一个以json形式应用样式的组件,我需要有条件地覆盖样式。

请参阅样式定义:

const classes = {
  txt: {
    color: 'green',
    ...
  },
  txtBlue:{
    color: 'blue',
    ..
  },
};

查看模板:

<div style={classes.txt + (this.state.goBlue ? classes.txtBlue)}></div>

我上面写的+ (this.state.goBlue ? classes.txtBlue)无效,只是表明我需要理解和工作。

this.state.goBlue为真时,我希望classes.txtclasses.txtBlue都适用于div

谢谢

2 个答案:

答案 0 :(得分:2)

您没有正确使用三元运算符,可以执行以下操作:

<div style={ this.state.goBlue ? { ...classes.txt, ...classes.txtBlue } : classes.txt }></div>

如果this.state.goBlue为真,这将同时应用两种样式,否则将仅应用classes.txt

答案 1 :(得分:0)

找到了解决方案!

通过将其添加到render()函数中:

const txtStyle =
            this.state.goBlue ?
                Object.assign({}, classes.txt, classes.txtBlue) :
                Object.assign({}, classes.txt);

这是模板:

<div style={txtStyle}></div>

我能够实现自己想要的。