0Pricing
React Academy · Урок

Сортировка, фильтрация и разбиение на страницы

Включайте сортировку столбцов, глобальную фильтрацию и фильтрацию столбцов, а также разбиение на страницы на стороне клиента с возможностями TanStack Table

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

Включение сортировки

Чтобы добавить сортировку, импортируйте getSortedRowModel и добавьте его в конфигурацию useReactTable. Также потребуется состояние сортировки — массив объектов {id, desc} — и обработчик onSortingChange, связанный с состоянием React.

Модель отсортированных строк оборачивает базовую модель строк и переупорядочивает строки на основе текущего состояния сортировки.

Переключение сортировки в заголовке столбца

Каждый заголовок столбца предоставляет column.getToggleSortingHandler(), который следует назначить свойству onClick элемента th. При нажатии состояния циклически меняются: по возрастанию, по убыванию и без сортировки.

column.getIsSorted() возвращает 'asc', 'desc' или false, что позволяет отобразить подходящую стрелку индикатора сортировки.

Сортировка по нескольким столбцам

TanStack Table поддерживает одновременную сортировку по нескольким столбцам. Чтобы добавить второй столбец в массив сортировки, не удаляя первый, удерживайте клавишу Shift при нажатии на его заголовок.

Массив sortingState содержит все активные столбцы сортировки в порядке приоритета, а модель отсортированных строк применяет их последовательно.

Глобальная фильтрация

Включите глобальную фильтрацию, импортировав getFilteredRowModel и добавив состояние globalFilter вместе с обработчиком onGlobalFilterChange. Свяжите элемент поля ввода с этим состоянием, чтобы одновременно фильтровать данные по всем столбцам.

По умолчанию глобальный фильтр использует стратегию нечёткого сопоставления или проверки вхождения; настроить её можно через filterFns.

Фильтрация на уровне столбца

Отдельные столбцы могут предоставлять собственные фильтры через column.getFilterValue() и column.setFilterValue(). Добавьте поле ввода под каждым заголовком столбца и свяжите его с этими методами.

Фильтры столбцов и глобальные фильтры применяются вместе: чтобы попасть в отфильтрованную модель строк, строка должна пройти все активные фильтры.

Включение постраничной разбивки

Импортируйте getPaginationRowModel и добавьте его в конфигурацию useReactTable вместе с объектом состояния постраничной разбивки (pageIndex и pageSize) и обработчиком onPaginationChange.

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

Переход между страницами

Экземпляр таблицы предоставляет методы table.nextPage(), table.previousPage(), table.firstPage() и table.lastPage() для перехода между страницами. Используйте table.getCanNextPage() и table.getCanPreviousPage(), чтобы отключать кнопки на границах списка страниц.

table.setPageIndex(n) сразу переходит на указанную страницу, а table.setPageSize(n) изменяет количество строк на странице.

Информация о страницах

table.getPageCount() возвращает общее количество страниц: число отфильтрованных строк делится на pageSize. table.getState().pagination.pageIndex возвращает текущий индекс страницы, отсчитываемый с нуля.

Используйте эти значения, чтобы создать в интерфейсе постраничной разбивки счётчик вроде «Страница 3 из 12».

Объединение моделей строк

Модели строк сочетаются: getCoreRowModel предоставляет основу, getFilteredRowModel оборачивает её и применяет фильтры, getSortedRowModel оборачивает отфильтрованные данные и применяет сортировку, а getPaginationRowModel выделяет из результата строки текущей страницы.

Порядок важен: сначала выполняется фильтрация, затем сортировка, а постраничная разбивка — в последнюю очередь.

Особенности производительности

TanStack Table внутренне мемоизирует вычисления моделей строк. Сортировка и фильтрация больших наборов данных выполняются эффективно, поскольку пересчитываются только изменившиеся модели строк.

Для чрезвычайно больших наборов данных — от 100 000 строк — сочетайте постраничную разбивку с виртуализацией (react-virtual), чтобы не отрисовывать все строки страницы одновременно.

Итоги сортировки, фильтрации и постраничной разбивки

Свяжите getSortedRowModel с состоянием сортировки, getFilteredRowModel — с globalFilter и состояниями фильтров столбцов, а getPaginationRowModel — с состоянием постраничной разбивки. Каждая возможность включается отдельно и легко сочетается с остальными.

Заголовки столбцов запускают сортировку через getToggleSortingHandler; поля ввода запускают фильтрацию через setFilterValue и onGlobalFilterChange; кнопки управляют постраничной разбивкой через nextPage, previousPage и setPageIndex.

Состояние постраничной разбивки TanStack Table

Какой объект хранит текущий индекс страницы и размер страницы в состоянии постраничной разбивки TanStack Table?

Итоги урока

Для сортировки требуются getSortedRowModel, состояние сортировки и обработчики нажатия на заголовки столбцов. Для фильтрации используется getFilteredRowModel вместе с глобальным состоянием фильтра и состояниями фильтров отдельных столбцов. Для постраничной разбивки используется getPaginationRowModel вместе с состояниями pageIndex и pageSize.

Все три модели строк сочетаются автоматически: сначала фильтрация, затем сортировка, затем постраничная разбивка.

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

Урок «Сортировка, фильтрация и разбиение на страницы» бесплатный?

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

Чему я научусь в уроке «Сортировка, фильтрация и разбиение на страницы»?

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

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

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

Сколько времени занимает урок «Сортировка, фильтрация и разбиение на страницы»?

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

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

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

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

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