如何根据 React 中的 3 个条件更改 table 行颜色

How to change the table row color based on 3 conditions in React

我是新手。我想根据某些条件更改 table 行。就像我有一个名为 deadLine 的值。因此,如果 deadLine 日期与当前日期之间的差异为 2,则 table 行应为绿色,如果差异为 1,则 table 行应为黄色,如果为 0 或 -ve,则 table 行应该是红色的。

注意:deadLine 是一个字符串,格式为 dd/MM/yyyy

我怎样才能在反应中实现这一点?我在 Whosebug 中看到了一些示例,但没有帮助。

我有这样的代码

<TableBody>
                {
                this.props.result.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row,i) =>(


                  <TableRow  key={i} >

                    <TableCell component="th"   >
                     <Typography variant="h4"> {row.a} </Typography>
                    </TableCell>
                    <TableCell align="left" > <Typography variant="h4">{row.b}</Typography>  </TableCell>
                    <TableCell align="left" > <Typography variant="h4"> {row.c} </Typography> </TableCell>
                    <TableCell align="left" > <Typography variant="h4"> {row.d} </Typography> </TableCell>
                    <TableCell align="left" > <Typography variant="h4"> {row.deadline} </Typography> </TableCell>
                  </TableRow>


                ))}
</TableBody>

您可以只在 TableRow 上应用 class 或样式 属性:

<TableRow style={{backgroundColor:'red'}}> 将更改行的背景。

最好用 classes 来做,所以在 css 文件中定义三个 classes :

.green{background-color: green;}
.yellow{background-color: yellow;}
.red{background-color: red;}

然后您可以创建一个函数,根据截止日期,return 您需要申请 class。像 :

const getBackgroundColor = deadline => {
    return conditionToRed ? 'red' : conditionToYellow ? 'yellow' : 'green';
}

在你的 jsx 中你会做类似的事情:

<TableRow className={getBackgroundColor()}>

首先,定义 CSS 样式

.green {} // green style
.yellow {} // yellow style
.red{} // red style

然后为你的组件定义你的逻辑方法

.....
dateDiff = (deadLine) => {
  return (Date.parse(deadLine) - Date.now()) / (24 * 60 * 60 * 1000);
}
rowColor = (deadline) => {
   if (this.dateDiff(deadline) >= 2) {
      return 'green';
   } else if (this.dateDiff(deadline) >= 1) {
      return 'yellow';
   } else {
      return 'red';
   }
}
.....
render(){
 ......
 <TableBody>
{
this.props.result.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row,i) =>(


<TableRow className={this.rowColor(row.deadline)}  key={i} >

  <TableCell component="th"   >
    <Typography variant="h4"> {row.a} </Typography>
  </TableCell>
  <TableCell align="left" > <Typography variant="h4">{row.b}</Typography>  </TableCell>
  <TableCell align="left" > <Typography variant="h4"> {row.c} </Typography> </TableCell>
  <TableCell align="left" > <Typography variant="h4"> {row.d} </Typography> </TableCell>
  <TableCell align="left" > <Typography variant="h4"> {row.deadline} </Typography> </TableCell>
</TableRow>


))}

}