0Pricing
React Academy · Урок

Определение столбцов и отображение строк

Настраивайте определения столбцов с геттерами, заголовками и средствами отображения ячеек для показа данных

«Определение столбцов и отображение строк» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Тип ColumnDef

Каждый столбец в TanStack Table описывается объектом ColumnDef. Два наиболее важных поля — accessorKey (имя свойства объекта данных) и header (строка с названием столбца или функция отрисовки).

Подход с accessorKey идеально подходит для плоских данных, а для сложных или вычисляемых значений нужен accessorFn.

accessorKey и accessorFn

Если в данных есть непосредственное свойство, например name или email, используйте accessorKey: 'name'. Если значение нужно вычислить, например объединить firstName и lastName, используйте accessorFn: row => row.firstName + ' ' + row.lastName.

Оба варианта получают полную типизацию, если передать обобщённый тип данных строки в ColumnDef.

Пользовательская отрисовка ячеек с помощью cell

Поле cell в ColumnDef принимает функцию, которая получает контекст ячейки и возвращает JSX. Так можно отображать внутри ячейки метки, кнопки, изображения или любой другой пользовательский интерфейс.

Для обычных текстовых значений достаточно cell.renderValue(). Для более сложного содержимого извлеките нужные сведения из cell.getContext().

Создание массива columns

Определяйте columns вне компонента, чтобы не создавать их заново при каждом рендеринге. Передайте массив в useReactTable вместе с data и getCoreRowModel.

TypeScript выведет типы столбцов, если указать ColumnDef с типом ваших данных, и предоставит автодополнение для значений accessorKey.

Объяснение getCoreRowModel

getCoreRowModel — фабричная функция, импортируемая из @tanstack/react-table. Передайте её возвращаемое значение в useReactTable, чтобы указать экземпляру, как построить базовый список строк из вашего массива data.

Дополнительные модели строк (отсортированные, отфильтрованные и разбитые на страницы) добавляются поверх него передачей дополнительных фабрик моделей.

Отрисовка thead с помощью getHeaderGroups

Вызовите table.getHeaderGroups() и переберите результат, чтобы отобразить thead. Каждая группа заголовков содержит массив headers, а каждый header — определение столбца и идентификатор.

Используйте flexRender(header.column.columnDef.header, header.getContext()), чтобы отобразить содержимое заголовка независимо от того, является ли оно строкой или функцией, возвращающей JSX.

Отрисовка tbody с помощью getRowModel

Вызовите table.getRowModel().rows и преобразуйте каждую строку в элемент tr. Внутри вызовите row.getVisibleCells() и преобразуйте каждую ячейку в td.

Используйте flexRender(cell.column.columnDef.cell, cell.getContext()), чтобы отобразить содержимое ячейки с учётом пользовательского средства отрисовки, заданного в столбце.

Вспомогательная функция flexRender

flexRender — это вспомогательная функция, которая принимает компонент React, функцию, возвращающую JSX, или обычное значение и единообразно отображает его. Благодаря этому определения столбцов могут использовать как простые строки, так и полноценные функции отрисовки для заголовков и ячеек.

Единый API избавляет от необходимости проверять тип определения перед отрисовкой.

Контекст ячейки и renderValue

cell.renderValue() возвращает исходное значение accessor, отформатированное как строка. Для большего контроля cell.getContext() предоставляет полный контекст отрисовки, включая строку, столбец, экземпляр таблицы и исходное значение.

Пользовательские средства отрисовки ячеек используют этот контекст, чтобы получать связанные данные строки, не ограничиваясь одним значением accessor.

Закрепление столбцов и метаданные

Каждый ColumnDef принимает поле meta, в котором можно хранить произвольные метаданные, например isSticky: true или alignment: 'right'. Получить их в средстве отрисовки можно через column.columnDef.meta.

Для закрепления столбцов слева или справа TanStack Table предоставляет состояние закрепления столбцов и вспомогательные методы в объекте столбца.

Объединение всех частей

Определите массив ColumnDef с полями accessorKey, header и необязательным cell. Вызовите useReactTable с data, columns и getCoreRowModel. Переберите getHeaderGroups для thead и getRowModel().rows для tbody, используя flexRender для отрисовки каждого заголовка и каждой ячейки.

Эта минимальная настройка даёт полностью функциональную таблицу с полностью настраиваемым оформлением.

accessorKey и accessorFn

Когда в определении столбца TanStack Table следует использовать accessorFn вместо accessorKey?

Итоги урока

Определяйте столбцы с помощью ColumnDef: используйте accessorKey для непосредственных полей или accessorFn для вычисляемых значений. Передайте columns и getCoreRowModel в useReactTable, а затем отобразите заголовки через getHeaderGroups, а строки тела — через getRowModel().rows.

Вспомогательная функция flexRender единообразно обрабатывает определения заголовков и ячеек в виде строк или функций.

Часто задаваемые вопросы

Урок «Определение столбцов и отображение строк» бесплатный?

Да — полный текст урока «Определение столбцов и отображение строк» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Определение столбцов и отображение строк»?

Настраивайте определения столбцов с геттерами, заголовками и средствами отображения ячеек для показа данных Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Определение столбцов и отображение строк»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Философия TanStack Table и бессодержательный дизайн
  2. Определение столбцов и отображение строк
  3. Сортировка, фильтрация и разбиение на страницы
  4. Выбор строк и виртуализированные таблицы
← Назад к React Academy