我正在尝试根据单元格的值使用反应表来设置表格的样式,首先我试图更改每个单元格的背景颜色,但是我基于反应表 api 文档并添加了 getProps () 到列数组似乎不起作用。
首先,我只想根据值更新单元格的样式,但是根据单元格值添加自定义类名也可以。
这是创建列的数组:
const columns = [
{
Header: 'Things to Do',
accessor: 'item',
getProps: (rowInfo) => {
return {
style: {
backgroundColor: rowInfo && rowInfo.row.item === 'Do a thing' ? 'red' : null,
},
}
}
},
{
Header: '2020-04-01',
accessor: 'date.2020-04-01',
getProps: (rowInfo) => {
return {
style: {
backgroundColor: rowInfo && rowInfo.row['date.2020-04-01'] === 'Y' ? 'red' : null,
},
}
}
},
这是一个示例数据(您可以看到在访问它们以生成单元格时会嵌套标题,例如 date.2020-04-01。
const data = [
{
item: 'Do a thing',
date: {
'2020-04-01': 'Y',
'2020-04-02': 'Y',
'2020-04-03': 'N',
'2020-04-04': 'Y',
}
},
]
需要明确的是,我的表格是使用一些非常标准的东西生成的:
const Table = ({ columns, data }) => {
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} = useTable({
columns,
data,
});
return (
<table {...getTableProps()} className="table">
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th {...column.getHeaderProps()}>{column.render('Header')}</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map((row, i) => {
prepareRow(row)
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return <td {...cell.getCellProps()}>{cell.render('Cell')}</td>
})}
</tr>
)
})}
</tbody>
</table>
);
}