Implementing Controlled Pagination with React TanStack Table
Demonstrates how to add controlled pagination by integrating the usePagination hook. Includes managing page state and rendering pagination controls.
import React from 'react';
import { usePagination, useTable } from 'react-table';
Import necessary hooks from react-table.
const TableComponent = ({ columns, data }) => {
const {
getTableProps,
getTableBodyProps,
headerGroups,
prepareRow,
page,
canPreviousPage,
canNextPage,
pageOptions,
pageCount,
gotoPage,
nextPage,
previousPage,
setPageSize,
state: { pageIndex, pageSize },
} = useTable({
columns,
data,
},
usePagination
);
return (
<div>
// Table structure here
<div>
<button onClick={() => gotoPage(0)} disabled={!canPreviousPage}>{'<<'}</button>
<button onClick={() => previousPage()} disabled={!canPreviousPage}>{'<'}</button>
<button onClick={() => nextPage()} disabled={!canNextPage}>{'>'}</button>
<button onClick={() => gotoPage(pageCount - 1)} disabled={!canNextPage}>{'>>'}</button>
<span>
Page{' '}
<strong>
{pageIndex + 1} of {pageOptions.length}
</strong>
</span>
<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 the TableComponent component, integrating the usePagination hook. It includes rendering the table and pagination controls, allowing users to navigate through pages and specify the number of items per page.