function Table() {
const data = React.useMemo(
() => [
{
name: 'Panchito Green',
age: 10,
shirtSize: 'S',
},
{
name: 'Rubia Robker',
age: 25,
shirtSize: 'M',
},
{
name: 'Micheil Sappell',
age: 50,
shirtSize: 'L',
},
{
name: 'Geoffrey Sprason',
age: 30,
shirtSize: 'M',
},
{
name: 'Grissel Rounsefull',
age: 21,
shirtSize: 'S',
},
],
[]
);
const columns = React.useMemo(
() => [
{
Header: 'Name',
accessor: 'name',
},
{
Header: 'Age',
accessor: 'age',
},
{
Header: 'Shirt Size',
accessor: 'shirtSize',
},
],
[]
);
const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable(
{
columns,
data,
},
useGroupBy,
useExpanded,
useRowExpandColumn
);
return (
<table {...getTableProps()}>
<thead>
{headerGroups.map((headerGroup) => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map((column) => (
<th {...column.getHeaderProps()}>
{column.canGroupBy ? (
<span {...column.getGroupByToggleProps()}>{column.isGrouped ? '🛑 ' : '👊 '}</span>
) : null}
{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.isGrouped ? (
<>
{cell.render('Cell')} ({row.subRows.length})
</>
) : cell.isAggregated ? (
cell.render('Aggregated')
) : cell.isPlaceholder ? null : (
cell.render('Cell')
)}
</td>
);
})}
</tr>
);
})}
</tbody>
</table>
);
}