TableRow и TableCell — это ключевые компоненты для построения таблиц в библиотеке MUI (Material-UI) на JavaScript и React. Они обеспечивают гибкую разметку строк и ячеек, полностью соответствующую стандартам Material Design.
TableRow используется для создания строк таблицы. Каждая
строка содержит одну или несколько ячеек, которые могут быть как
заголовочными, так и обычными. Основные свойства:
true строка подсвечивается при наведении курсора.tr) на другой HTML-элемент или React-компонент.Пример использования:
import TableRow from '@mui/material/TableRow';
import TableCell from '@mui/material/TableCell';
Идентификатор
Имя пользователя
Роль
В этом примере строка будет подсвечиваться при наведении и иметь
выделенный стиль, так как установлено свойство
selected.
Особенности:
TableRow можно вкладывать любые React-элементы, но
для корректного отображения таблицы рекомендуется использовать только
TableCell.TableRow наследует стиль из Table и
TableBody, что позволяет контролировать внешний вид таблицы
глобально.TableCell представляет отдельную ячейку таблицы.
Является универсальным компонентом и может использоваться как для
заголовков, так и для обычных ячеек.
Основные свойства:
"inherit" | "left" | "center" | "right" | "justify".td для обычных ячеек, th для
заголовочных)."row" | "col" | "rowgroup" | "colgroup")."normal" | "checkbox" | "none".Пример:
1
Иван Иванов
Администратор
Здесь первая ячейка является заголовочной для строки, а две следующие — обычные ячейки с разным выравниванием.
MUI поддерживает три способа стилизации:
align,
padding, selected, hover).sx — удобного способа
добавления CSS:
ID
Пользователь
styled API:import { styled } from '@mui/material/styles';
import TableCell from '@mui/material/TableCell';
const CustomTableCell = styled(TableCell)(({ theme }) => ({
backgroundColor: theme.palette.primary.light,
color: theme.palette.common.white,
fontWeight: 600,
}));
Имя
Роль
TableRow и TableCell работают совместно
с:
Пример комплексной таблицы:
import Table from '@mui/material/Table';
import TableHead from '@mui/material/TableHead';
import TableBody from '@mui/material/TableBody';
import TableFooter from '@mui/material/TableFooter';
import TableRow from '@mui/material/TableRow';
import TableCell from '@mui/material/TableCell';
ID
Имя
Роль
1
Иван Иванов
Администратор
2
Мария Петрова
Модератор
Итого пользователей: 2
При работе с массивами данных удобно использовать map
для генерации строк и ячеек:
const users = [
{ id: 1, name: 'Иван Иванов', role: 'Администратор' },
{ id: 2, name: 'Мария Петрова', role: 'Модератор' },
];
{users.map(user => (
{user.id}
{user.name}
{user.role}
))}
Это позволяет создавать таблицы с динамическим контентом без дублирования кода.
Для доступности (a11y) важно использовать свойства
component и scope в заголовочных ячейках.
TableCell с component="th" и
scope="row" делает таблицу понятной для экранных
читалок.