【发布时间】:2020-12-25 23:27:33
【问题描述】:
我有一个要映射的数据数组,我想根据数组中每个对象的两个项目的比较来设置三种颜色之一的卡片元素。代码如下所示:
data.map(item => {
return (
//some code
<Card className={
item.someNumber > item.anotherNumber*1.05 ?
classes.orange :
item.someNumber < item.anotherNumber*.95 ?
classes.blue :
classes.grey}
>
//more code
这似乎有效(即我所有的卡片都按预期着色),但我的问题是,这是“坏代码”吗?我真的找不到明确的答案或类似的解决方案(可能我没有问正确的问题);我确实尝试在渲染的代码上方使用 if/else 语句创建函数,但由于我们如何映射数据以及颜色基于数组中每个对象内的比较这一事实,我无法弄清楚弄清楚如何使其他任何事情都起作用。
【问题讨论】:
-
你说。在我看来,任何超过两种情况的三元运算符都不利于可读性。
-
你为什么不写一个包含这个逻辑的方法(以更易读的方式)并返回正确的类名?
-
@PrateekThapa 实际上我是唯一一个阅读这段代码的人,所以如果可读性是唯一的潜在问题,那么我可以接受它的现状。
-
@AndréFrings 问题之一是我要返回多张卡片,其中包含来自数组的不同数据,因此尝试按照您建议的方式编写方法变得很棘手(我确实尝试了几次小时)。
标签: reactjs material-ui conditional-operator