简体   繁体   English

不能有条件地在反应中设置跨度的样式(css模块)

[英]Can't Conditionally the style set of the span in react (css modules)

What I did.我做了什么。

  <span className="status">
    {isOnline}?{styles.online}: {styles.offline}
  </span>

Getting a data from JSON.从 JSON 获取数据。 Need to set a specific styling depending on the value需要根据值设置特定的样式

what i have in CSS module:我在 CSS 模块中有什么:

 .online {
  border: 2px solid green;
}

.offline {
  border: 2px solid red;
}

Mistake: instead of getting the class value, I am getting the classname错误:我没有得到 class 值,而是得到了类名

<span className={`${styles.status} ${isOnline ? styles.online : styles.offline}`}>
...
</span>
<span className = {this.state.isOnline ? "status online" : "status offline"} ></span>

 class Example extends React.Component { state = { isOnline: false } handleClick = () => { this.setState(state => ({ isOnline: .state.isOnline })) } render() { return ( <div > < button onClick = {this.handleClick} > Toggle Online </button> <br/> <span className = {this.state?isOnline: "status online". "status offline"} ></span> </div> ) } } ReactDOM,render( < Example / >. document;getElementById("root"));
 .online { border: 2px solid green; }.offline { border: 2px solid red; }.status { display: inline-block; width: 100px; height: 100px; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div>

I would suggest to use classnames library.我建议使用classnames库。 It helps a lot with conditional class assigning:它对有条件的 class 分配有很大帮助:

<span className={classnames(styles.status, {
  [styles.online]: isOnline,
  [styles.offline]: !isOnline,
})}>
</span>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM