Компонент Table в Chakra UI используется для
отображения табличных данных с гибкой кастомизацией внешнего вида,
адаптивностью и поддержкой различных тем оформления. Основой работы с
таблицами является комбинация нескольких компонентов:
Table, Thead, Tbody,
Tr, Th, Td и
TableCaption.
import { Table, Thead, Tbody, Tr, Th, Td, TableCaption } from '@chakra-ui/react';
<Table variant="simple">
<TableCaption>Пример простой таблицы</TableCaption>
<Thead>
<Tr>
<Th>Имя</Th>
<Th>Возраст</Th>
<Th>Город</Th>
</Tr>
</Thead>
<Tbody>
<Tr>
<Td>Алексей</Td>
<Td>28</Td>
<Td>Москва</Td>
</Tr>
<Tr>
<Td>Мария</Td>
<Td>25</Td>
<Td>Санкт-Петербург</Td>
</Tr>
</Tbody>
</Table>
Chakra UI предоставляет несколько вариантов отображения
таблиц через проп variant:
simple – минималистичная таблица без границ между
строками.striped – чередующиеся полосы для улучшенной
читаемости.unstyled – полностью без стилей, полезно для кастомной
стилизации.outline – таблица с внешней рамкой.<Table variant="striped" colorScheme="teal">
...
</Table>
Проп colorScheme позволяет задать цветовую тему для
полос (striped) или других элементов таблицы.
С помощью пропа size можно управлять высотой строк и
размером текста:
sm – компактная таблица.md – стандартная таблица.lg – увеличенные строки и текст.<Table size="sm">
...
</Table>
Для управления шириной столбцов и адаптивностью используют
стандартные CSS-свойства или системные пропсы Chakra (w,
minW, maxW).
Chakra UI позволяет легко добавлять интерактивные элементы внутри таблицы:
_hover).<Tr _hover={{ bg: "gray.100" }}>
<Td>
<Checkbox />
</Td>
<Td>Иван</Td>
<Td>32</Td>
</Tr>
Стили для состояний (_hover, _selected)
можно задавать как на строках (Tr), так и на отдельных
ячейках (Td).
Для больших таблиц удобно закреплять заголовок:
<Box overflowX="auto">
<Table variant="simple">
<Thead position="sticky" top={0} bg="gray.50" zIndex={1}>
<Tr>
<Th>Имя</Th>
<Th>Возраст</Th>
<Th>Город</Th>
</Tr>
</Thead>
<Tbody>
...
</Tbody>
</Table>
</Box>
Использование обертки Box с
overflowX="auto" позволяет горизонтально прокручивать
таблицу на мобильных устройствах.
Chakra UI не предоставляет встроенной сортировки, но легко интегрируется с библиотеками управления состоянием, например, React Table или простыми обработчиками массивов:
const [data, setData] = useState(rows);
const sortByAge = () => {
setData([...data].sort((a, b) => a.age - b.age));
};
<Button onCl ick={sortByAge}>Сортировать по возрасту</Button>
Таким образом, Chakra UI обеспечивает визуальную часть таблицы, а функциональность сортировки и фильтрации реализуется через стандартный React-подход.
Таблицы полностью интегрируются с темами Chakra UI, включая светлые и темные режимы:
<Table variant="striped" colorScheme="purple">
...
</Table>
Можно менять цвет фона строк, текст, границы и отступы через
системные пропсы (bg, color,
borderColor, p, px,
py), а также создавать глобальные настройки через объект
темы в extendTheme.
Для объединения ячеек используют стандартные свойства HTML:
colSpan – объединение по горизонтали.rowSpan – объединение по вертикали.<Tr>
<Td rowSpan={2}>Объединено по вертикали</Td>
<Td>Данные 1</Td>
</Tr>
<Tr>
<Td>Данные 2</Td>
</Tr>
Это позволяет создавать сложные таблицы с группировкой данных.
Chakra UI автоматически добавляет базовые атрибуты для доступности:
scope="col" для заголовков столбцов.scope="row" для заголовков строк.aria-label и других
ARIA-атрибутов для улучшения работы с экранными читалками.<Th scope="col">Имя</Th>
Компонент Table в Chakra UI сочетает в себе:
Это делает его идеальным инструментом для создания современных таблиц в веб-приложениях на JavaScript.