DataTable
Таблица на базе @tanstack/react-table с сортировкой колонок, глобальным поиском, внешними фильтрами, пагинацией и произвольным рендером ячеек.
Basic + Sorting
Минимальный набор: columns + data. Клик по заголовку — сортировка asc → desc → off.
| 1 | Пользователь 1 | user1@example.com | admin | active |
| 2 | Пользователь 2 | user2@example.com | editor | inactive |
| 3 | Пользователь 3 | user3@example.com | viewer | pending |
| 4 | Пользователь 4 | user4@example.com | admin | active |
| 5 | Пользователь 5 | user5@example.com | editor | inactive |
| 6 | Пользователь 6 | user6@example.com | viewer | pending |
| 7 | Пользователь 7 | user7@example.com | admin | active |
| 8 | Пользователь 8 | user8@example.com | editor | inactive |
| 9 | Пользователь 9 | user9@example.com | viewer | pending |
| 10 | Пользователь 10 | user10@example.com | admin | active |
Sorting
enableSorting: false на колонке «Действия» — она не сортируется. «Регистрации» — числовая сортировка, по дефолту desc-first.
| Действия | ||||
|---|---|---|---|---|
| 1 | Пользователь 1 | admin | 37 | |
| 2 | Пользователь 2 | editor | 74 | |
| 3 | Пользователь 3 | viewer | 111 | |
| 4 | Пользователь 4 | admin | 148 | |
| 5 | Пользователь 5 | editor | 185 | |
| 6 | Пользователь 6 | viewer | 222 | |
| 7 | Пользователь 7 | admin | 259 | |
| 8 | Пользователь 8 | editor | 296 |
Search
Передан searchColumn — над таблицей появляется поле глобального поиска.
| 1 | Пользователь 1 | user1@example.com | admin | active |
| 2 | Пользователь 2 | user2@example.com | editor | inactive |
| 3 | Пользователь 3 | user3@example.com | viewer | pending |
| 4 | Пользователь 4 | user4@example.com | admin | active |
| 5 | Пользователь 5 | user5@example.com | editor | inactive |
| 6 | Пользователь 6 | user6@example.com | viewer | pending |
| 7 | Пользователь 7 | user7@example.com | admin | active |
| 8 | Пользователь 8 | user8@example.com | editor | inactive |
| 9 | Пользователь 9 | user9@example.com | viewer | pending |
| 10 | Пользователь 10 | user10@example.com | admin | active |
External Filtering
Фильтры живут снаружи (useState + useMemo). В DataTable приходит уже отфильтрованный data — таблица сама пересчитывает пагинацию.
| 1 | Пользователь 1 | user1@example.com | ||
| 2 | Пользователь 2 | user2@example.com | ||
| 3 | Пользователь 3 | user3@example.com | ||
| 4 | Пользователь 4 | user4@example.com | ||
| 5 | Пользователь 5 | user5@example.com |
Row Actions
Display-колонка без accessor: рендерит кнопки Редактировать / Удалить. Удаление меняет локальный state — таблица перерисовывается.
| Действия | ||||
|---|---|---|---|---|
| 1 | Пользователь 1 | user1@example.com | ||
| 2 | Пользователь 2 | user2@example.com | ||
| 3 | Пользователь 3 | user3@example.com | ||
| 4 | Пользователь 4 | user4@example.com | ||
| 5 | Пользователь 5 | user5@example.com | ||
| 6 | Пользователь 6 | user6@example.com |
— · Строк: 20Resizable Columns
Тяни за правый край заголовка. Двойной клик по handle — сброс к size. min/maxSize задаются в columnDef.
| 1 | Пользователь 1 | user1@example.com | admin | active |
| 2 | Пользователь 2 | user2@example.com | editor | inactive |
| 3 | Пользователь 3 | user3@example.com | viewer | pending |
| 4 | Пользователь 4 | user4@example.com | admin | active |
| 5 | Пользователь 5 | user5@example.com | editor | inactive |
| 6 | Пользователь 6 | user6@example.com | viewer | pending |
Custom Cell
Произвольный JSX в cell: ссылки, бейджи, форматирование чисел.
| #1 | Пользователь 1 | user1@example.com | 37 | ||
| #2 | Пользователь 2 | user2@example.com | 74 | ||
| #3 | Пользователь 3 | user3@example.com | 111 | ||
| #4 | Пользователь 4 | user4@example.com | 148 | ||
| #5 | Пользователь 5 | user5@example.com | 185 | ||
| #6 | Пользователь 6 | user6@example.com | 222 | ||
| #7 | Пользователь 7 | user7@example.com | 259 | ||
| #8 | Пользователь 8 | user8@example.com | 296 |
Page Size
pageSize={5} — короткие страницы для виджетов и компактных таблиц.
| 1 | Пользователь 1 | user1@example.com | admin | active |
| 2 | Пользователь 2 | user2@example.com | editor | inactive |
| 3 | Пользователь 3 | user3@example.com | viewer | pending |
| 4 | Пользователь 4 | user4@example.com | admin | active |
| 5 | Пользователь 5 | user5@example.com | editor | inactive |
Empty
Пустой массив data — таблица показывает строку «Нет данных.»
| Нет данных. | ||||