我有一个需要某种background-color
的div
。颜色取决于div
中的值,该值可以为负、零或正。
例如:
<div className={`colors ${value > 0 ? "green" : ""}`}>{value}</div>
与SCSS:
.colors {
padding: 10px;
&.green {
background-color: green;
}
}
如果value
大于0,会使background-color
变绿。但是我怎么能改变这一点,如果value
是零,然后添加一个neutral
类与background-color
灰色,和一个红色类与background-color
红色如果是负的。
你非常接近三进制;您可以通过在模板中实现嵌套的三元语句轻松解决这个问题。假设你有三个CSS类:green
表示正,red
表示负,neutral
表示0。
可以创建一个嵌套的三元值来匹配所有操作,如下所示:
value > 0
? "green" // positive, make it green
: value < 0
? "red" // negative, it's red
: "neutral" // it's neither positive nor negative; it's 0; make it neutral
在JSX中,它看起来像:
<div className={`colors {
value > 0
? "green"
: value < 0
? "red"
: "neutral"
}`>{value}</div>
同样,你也可以这样做:
const bgColor = new Map([
[false, "negative"],
[true, "positive"],
[0, "neutral"],
]);
<div className={`colors ${bgColor.get(value)}`}>{value}</>