withSortableStateDocs
The withSortableState HOC provides stateful management TableHeader sorting. It stores current sort id and sort direction.
Prefer using <Table sortable />
over this HOC.
Result
Loading...
Live Editor
const columns = [{title: 'Name',dataKey: 'name',},{title: 'Age',dataKey: 'age',},];const rows = [{name: 'Ada Lovelace',age: 36,},{name: 'Lord Byron',age: 36,},{name: 'Charles Babbage',age: 79,},{name: 'Marie Curie',age: 66,},];function sortById(id) {return (a, b) => {let x = a[id];let y = b[id];if (typeof x === 'string') {x = x.toLowerCase();}if (typeof y === 'string') {y = y.toLowerCase();}if (x < y) {return -1;} else if (x > y) {return 1;} else {return 0;}};}function sort(data, id, direction) {const sorted = data.sort(sortById(id));if (direction === 'desc') {sorted.reverse();}return sorted;}const SortableTable = withSortableState(Table);function Example() {const [sortedData, setSortedData] = React.useState(rows);return (<SortableTableid="demo-component"onClickSortLabel={(event, { sortId, sortDirection }) => {setSortedData([...sort(sortedData, sortId, sortDirection)]);}}><TableHeader><TableRow><TableCell id="name" sortable>Name</TableCell><TableCell id="age" sortable>Age</TableCell></TableRow></TableHeader><TableBody>{sortedData.map((row) => (<TableRow key={`row-${row.name}`}>{columns.map((column) => (<TableCell key={`row-${row.name}-${column.dataKey}`}>{row[column.dataKey]}</TableCell>))}</TableRow>))}</TableBody></SortableTable>);}render(<Example />);