From 4f73f1aaa18d3cb5d58e416df6a36ac519f465f7 Mon Sep 17 00:00:00 2001 From: Minjee Son <104430030+iammminzzy@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:18:08 +0100 Subject: [PATCH] [docs] Memoize array sorting --- .../components/table/TableSortAndSelection.js | 97 ++++----- .../table/TableSortAndSelection.tsx | 97 ++++----- .../order-dashboard/components/OrderTable.tsx | 8 +- docs/src/components/showcase/FolderTable.tsx | 8 +- .../modules/components/MaterialShowcase.js | 186 +++++++++--------- 5 files changed, 210 insertions(+), 186 deletions(-) diff --git a/docs/data/joy/components/table/TableSortAndSelection.js b/docs/data/joy/components/table/TableSortAndSelection.js index c7649aa9609b6d..cbfffb636abae7 100644 --- a/docs/data/joy/components/table/TableSortAndSelection.js +++ b/docs/data/joy/components/table/TableSortAndSelection.js @@ -242,6 +242,14 @@ export default function TableSortAndSelection() { const [page, setPage] = React.useState(0); const [rowsPerPage, setRowsPerPage] = React.useState(5); + const visibleRows = React.useMemo( + () => + [...rows] + .sort(getComparator(order, orderBy)) + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage), + [order, orderBy, page, rowsPerPage], + ); + const handleRequestSort = (event, property) => { const isAsc = orderBy === property && order === 'asc'; setOrder(isAsc ? 'desc' : 'asc'); @@ -332,53 +340,50 @@ export default function TableSortAndSelection() { rowCount={rows.length} />
- {[...rows] - .sort(getComparator(order, orderBy)) - .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) - .map((row, index) => { - const isItemSelected = isSelected(row.name); - const labelId = `enhanced-table-checkbox-${index}`; + {visibleRows.map((row, index) => { + const isItemSelected = isSelected(row.name); + const labelId = `enhanced-table-checkbox-${index}`; - return ( -