Fixed header
Set fixedHeader to keep the column headers visible while the user scrolls through
a long dataset. The table body becomes independently scrollable within a container whose height
is controlled by fixedHeaderScrollHeight.
Fixed header
40 rows in a scrollable container. Toggle fixed header on/off and change the scroll height with the controls above the table.
import DataTable, { type TableColumn } from 'react-data-table-component';
const columns: TableColumn<Employee>[] = [
{ name: '#', selector: r => r.id, width: '60px' },
{ name: 'Name', selector: r => r.name, sortable: true },
{ name: 'Department', selector: r => r.department, sortable: true },
{ name: 'Salary', selector: r => r.salary, sortable: true,
right: true, format: r => `$${r.salary.toLocaleString()}` },
{ name: 'Status', selector: r => r.status },
];
<DataTable
columns={columns}
data={data} // large dataset
fixedHeader
fixedHeaderScrollHeight="300px"
highlightOnHover
/> How it works
When fixedHeader is enabled, the responsive wrapper gains
overflow-y: auto and the max-height you set via
fixedHeaderScrollHeight. The column header row gets
position: sticky; top: 0 so it remains in view as the body scrolls within that
container.
Because the scroll container is the responsive wrapper, horizontal scrolling for wide tables continues to work normally. Both axes scroll together, but the header sticks on the vertical axis.
With pagination
Fixed header and pagination work together without any extra configuration. The scroll height only constrains the table body rows. The pagination bar sits below the responsive wrapper and is always fully visible.
<DataTable
columns={columns}
data={data}
fixedHeader
fixedHeaderScrollHeight="400px"
pagination
paginationPerPage={20}
/> With selection
The checkbox column header scrolls with all other headers and stays fixed. The select-all checkbox remains accessible at the top of the scrollable area.
<DataTable
columns={columns}
data={data}
fixedHeader
fixedHeaderScrollHeight="350px"
selectableRows
/> Prop reference
| Prop | Type | Default | Description |
|---|---|---|---|
fixedHeader | boolean | false | Stick column headers to the top of the scroll container. |
fixedHeaderScrollHeight | string | "100vh" |
Any valid CSS length (px, vh, %, etc.).
Sets the max-height of the scrollable body region.
Only applies when fixedHeader is true.
|