Introduction to React Table
React Table is a flexible and powerful library for building dynamic and customizable tables in React applications. Whether you’re working on a simple data display or a complex dashboard, React Table can streamline the process and provide extensive features to enhance user experience.
In this tutorial, we’ll walk through the basics of React Table, covering installation, basic usage, customization, and advanced features. By the end, you’ll have a solid understanding of how to leverage React Table to create stunning tables in your React projects.
Table of Contents:
- Installation
- Basic Usage
- Customization
- Advanced Features
1. Installation
To get started with React Table, you’ll need to install it into your project. You can do this using npm or yarn. Here’s how:
npm install react-table
or
yarn add react-table
2. Basic Usage
Once React Table is installed, you can import it into your component and start using it to display data. Here’s a simple example:
import React from 'react';
import { useTable } from 'react-table';
const Table = ({ columns, data }) => {
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
} = useTable({ columns, data });
return (
<table {...getTableProps()}>
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th {...column.getHeaderProps()}>{column.render('Header')}</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map(row => {
prepareRow(row);
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return <td {...cell.getCellProps()}>{cell.render('Cell')}</td>;
})}
</tr>
);
})}
</tbody>
</table>
);
};
export default Table;
3. Customization
React Table offers extensive customization options to tailor the appearance and behavior of your tables. You can customize everything from cell rendering to sorting and filtering. Here’s a brief example of how to customize cell rendering:
// Define custom cell renderers
const columns = [
{
Header: 'Name',
accessor: 'name',
Cell: row => <div>{row.value.toUpperCase()}</div>,
},
{
Header: 'Age',
accessor: 'age',
},
{
Header: 'Location',
accessor: 'location',
},
];
4. Advanced Features
React Table provides advanced features like sorting, filtering, pagination, and more out of the box. You can easily enable these features with minimal setup. Here’s how to enable sorting and pagination:
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
state,
page,
gotoPage,
nextPage,
previousPage,
setPageSize,
canPreviousPage,
canNextPage,
} = useTable(
{
columns,
data,
initialState: { pageIndex: 0, pageSize: 10 },
},
useSortBy,
usePagination
);
// JSX for pagination controls
<div>
<button onClick={() => previousPage()} disabled={!canPreviousPage}>
Previous
</button>
<span>
Page{' '}
<strong>
{state.pageIndex + 1} of {state.pageOptions.length}
</strong>{' '}
</span>
<button onClick={() => nextPage()} disabled={!canNextPage}>
Next
</button>
<select
value={state.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>;
This tutorial covers the basics of using React Table in your React applications. Experiment with different configurations and explore the official documentation for more advanced features and customization options. Happy coding!