Я пытаюсь стилизовать таблицу, используя таблицу реакций на основе значения ячейки, для начала я пытаюсь изменить цвет фона каждой ячейки, но то, что у меня есть, на основе документации 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>
);
}