Компоненты таблиц в MUI позволяют создавать
структурированные и стилизованные таблицы с минимальным количеством
кода, сохраняя гибкость при кастомизации. Основные строительные блоки
таблицы — это TableHead, TableBody и
TableFooter. Каждый из них выполняет определённую функцию и
имеет собственные свойства и возможности.
TableHead используется для отображения заголовков
колонок таблицы. Обычно он располагается в верхней части таблицы и
содержит один или несколько компонентов TableRow, каждый из
которых состоит из TableCell.
Пример использования:
import Table from '@mui/material/Table';
import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
import TableCell from '@mui/material/TableCell';
<Table>
<TableHead>
<TableRow>
<TableCell>ID</TableCell>
<TableCell>Имя</TableCell>
<TableCell>Возраст</TableCell>
</TableRow>
</TableHead>
</Table>
Особенности TableHead:
<thead> в DOM, что важно для доступности и SEO.sx или
className для задания фона, цвета текста и других
CSS-свойств.stickyHeader к компоненту Table, заголовок
будет фиксироваться при прокрутке.<Table stickyHeader>
<TableHead>
<TableRow>
<TableCell>ID</TableCell>
<TableCell>Имя</TableCell>
<TableCell>Возраст</TableCell>
</TableRow>
</TableHead>
</Table>
TableBody предназначен для отображения данных таблицы.
Основной элемент — TableRow, внутри которого располагаются
TableCell. Это центральная часть таблицы, где находятся все
динамические данные.
Пример использования с динамическими данными:
import TableBody from '@mui/material/TableBody';
const users = [
{ id: 1, name: 'Алексей', age: 30 },
{ id: 2, name: 'Мария', age: 25 },
];
<Table>
<TableBody>
{users.map(user => (
<TableRow key={user.id}>
<TableCell>{user.id}</TableCell>
<TableCell>{user.name}</TableCell>
<TableCell>{user.age}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
Особенности TableBody:
<TableRow sx={{ backgroundColor: user.age > 28 ? '#f0f0f0' : 'inherit' }}>
TableFooter используется для отображения нижней части
таблицы, часто содержащей суммарные данные или дополнительные элементы
управления (например, пагинацию).
Пример использования:
import TableFooter from '@mui/material/TableFooter';
<Table>
<TableFooter>
<TableRow>
<TableCell colSpan={2}>Итого пользователей:</TableCell>
<TableCell>{users.length}</TableCell>
</TableRow>
</TableFooter>
</Table>
Особенности TableFooter:
<tfoot> в DOM.colSpan.TablePagination для организации постраничного отображения
данных.import TablePagination from '@mui/material/TablePagination';
<TableFooter>
<TableRow>
<TablePagination
count={users.length}
rowsPerPage={5}
page={0}
onPageCha nge={() => {}}
/>
</TableRow>
</TableFooter>
TableHead, TableBody, затем
TableFooter.sx и
className позволяет точно контролировать внешний вид
таблицы без необходимости писать отдельный CSS.stickyHeader вместе с TableContainer, чтобы
улучшить пользовательский опыт при прокрутке.Эта комбинация компонентов позволяет строить гибкие, функциональные и визуально согласованные таблицы с минимальными усилиями, сохраняя строгую семантику HTML и поддержку всех возможностей Material-UI.