Using Pagination with TanStack Table
Illustrate the implementation of pagination in a TanStack Table using the usePagination hook, including setting up page controls and displaying current page data.
import { useTable, usePagination } from 'react-table';
Import the necessary hooks from react-table library.
const TableComponent = ({ columns, data }) => {
const {
getTableProps,
getTableBodyProps,
headerGroups,
prepareRow,
page,
canPreviousPage,
canNextPage,
pageOptions,
pageCount,
gotoPage,
nextPage,
previousPage,
setPageSize,
state: { pageIndex, pageSize },
} = useTable(
{
columns,
data,
initialState: { pageIndex: 0 },
},
usePagination
);
return (
<div>
// Table structure here
<div className='pagination'>
<button onClick={() => gotoPage(0)} disabled={!canPreviousPage}>{'<<'}</button>
<button onClick={() => previousPage()} disabled={!canPreviousPage}>{'<'}</button>
<span>
Page {pageIndex + 1} of {pageOptions.length}
</span>
<button onClick={() => nextPage()} disabled={!canNextPage}>{'>'}</button>
<button onClick={() => gotoPage(pageCount - 1)} disabled={!canNextPage}>{'>>'}</button>
<select
value={pageSize}
onChange={e => {
setPageSize(Number(e.target.value));
}}
>
{[10, 20, 30, 40, 50].map(pageSize => (
<option key={pageSize} value={pageSize}>
Show {pageSize}
</option>
))}
</select>
</div>
</div>
);
}
Defines a table component using the useTable and usePagination hooks. It sets up the table structure and pagination controls including page navigation and page size selector.