Перейти к содержимому
v2.5.0
English
Русский
Документация

DataGrid

DataGrid — составной компонент для навигации по строкам и ячейкам сетки с клавиатуры.

API корня

DataGrid — корневой контейнер активной ячейки и навигации с клавиатуры.

ПропТипПо умолчанию
refRef<HTMLDivElement>—
Ref на корневой элемент сетки.
apiRefRef<DataGridApiRef<K>>—
Ref на императивный API сетки. Предоставляет низкоуровневые структуры для сложных сценариев: grid — помощник навигации по матрице; keyMap — Map<K, [row, col]> для быстрого поиска
wrapDataGridWrap—
Режим зацикливания навигации. 'horizontal' — переход по столбцам в пределах строки; 'vertical' — переход по строкам в пределах столбца; 'both' — оба поведения; undefined — без зацикливания
defaultActiveK''
Неконтролируемый начальный ключ активной (сфокусированной) ячейки.
activeK—
Контролируемый ключ активной (сфокусированной) ячейки.
onChangeActive(active: K) => void—
Вызывается при изменении ключа активной (сфокусированной) ячейки.
excludeDataGridExclude<K>—
Исключает ячейки из обхода фокусом. Может быть: одним ключом; массивом ключей; предикатом (key) => boolean
rowDeltanumber—
Шаг навигации по строкам для PageUp/PageDown. undefined — переход к первой/последней строке; number — сдвиг на N строк относительно текущей
onArrow(e: KeyboardEvent<HTMLDivElement>, node: MatrixNode<HTMLElement, K>, prevNode: MatrixNode<HTMLElement, K>) => void—
Вызывается на каждом шаге навигации стрелками после смены фокуса

Также принимает все атрибуты <div>.

API дочерних частей

DataGridRowGroup

Группирует строки для регистрации в навигации.

ПропТипПо умолчанию
scopeDataGridScope—
Необязательная логическая группа для ячеек сетки. Позволяет DataGrid считать ячейки частью одной страницы или раздела.

Также принимает все атрибуты <div>.

DataGridRow

Единица регистрации строки.

ПропТипПо умолчанию
rowобязательныйnumber—
Индекс строки (с нуля) для всех дочерних ячеек. Передаётся потомкам через контекст.

Также принимает все атрибуты <div>.

DataGridCell

Единица регистрации ячейки.

ПропТипПо умолчанию
colобязательныйnumber—
Индекс столбца ячейки (с 0). Вместе с индексом строки из контекста строки образует координаты сетки: [row, col].
refRef<HTMLDivElement>—
Внешний ref на корневой элемент ячейки. Объединяется с внутренней регистрацией itemRef([row, col], key), если ячейка не исключена.
cellKeyDataGridCellKey—
Стабильный ключ, идентифицирующий ячейку в матрице DataGrid. Если не задан, ключ выводится из row/col как ${row}:${col}.
asChildbooleanfalse
Если true, рендерит дочерние элементы через Slot и передаёт пропсы и ref дочернему элементу вместо использования нативного <div>.
excludedboolean—
Исключает ячейки из обхода фокусом. Переопределяет значение из корневого DataGrid

Также принимает все атрибуты <div>.

Хуки

useDataGridContext

Продвинутый хук для координации на уровне корня сетки.

useDataGridRowContext

Продвинутый хук для кастомных абстракций на уровне строки.

Типы

ТипОпределениеПримечания
DataGridCellKeyконтракт ключа ячейкиОбычно строится из строки и столбца.
DataGridCoordinatesформа координат строка/столбецИспользуется логикой навигации.
DataGridWrapобъединение режимов переносаПо горизонтали, по вертикали или в обе стороны.
DataGridExcludeконтракт исключенийУправление навигацией в разреженной сетке.
DataGridApiRefконтракт API refПродвинутые интеграции.
DataGridScopeидентификатор областиПри необходимости разделяет логические группы сеток.

Модель состояния

  • Активная ячейка может быть контролируемой или неконтролируемой.
  • Навигация зависит от порядка регистрации строк и ячеек.
  • Исключения и режим переноса напрямую влияют на модель клавиатуры.
  • Корень — фундаментальный слой; семантику выбора и пикера добавляют производные компоненты.

Замечания по интеграции

  • Для статичного отображения данных предпочитайте Table.
  • Используйте правила исключений, когда видимая матрица разрежена.
  • Используйте rowDelta, когда PageUp/PageDown должны сдвигать на фиксированное число строк, а не прыгать к краям.
  • Тщательно перепроверяйте интерактивное содержимое внутри ячеек.