0Pricing
React Academy · Lekcja

Sortowanie, filtrowanie i paginacja

Włączać sortowanie kolumn, filtrowanie globalne i kolumnowe oraz paginację po stronie klienta za pomocą funkcji TanStack Table

Sortowanie, filtrowanie i paginacja to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Włączanie sortowania

Aby dodać sortowanie, należy zaimportować getSortedRowModel i dodać je do konfiguracji useReactTable. Potrzebny jest również stan sortowania (tablica obiektów {id, desc}) oraz procedura obsługi onSortingChange połączona ze stanem React.

Model posortowanych wierszy opakowuje podstawowy model wierszy i zmienia kolejność wierszy na podstawie bieżącego stanu sortowania.

Przełączanie sortowania w nagłówku kolumny

Każdy nagłówek kolumny udostępnia column.getToggleSortingHandler(), który należy przypisać do onClick elementu th. Klikanie przełącza kolejno stany rosnący, malejący i niesortowany.

column.getIsSorted() zwraca 'asc', 'desc' lub false, co pozwala wyświetlić odpowiednią strzałkę sortowania.

Sortowanie według wielu kolumn

TanStack Table obsługuje jednoczesne sortowanie według wielu kolumn. Przytrzymanie klawisza Shift podczas klikania nagłówka drugiej kolumny dodaje ją do tablicy sortowania bez usuwania pierwszej kolumny.

Tablica sortingState zawiera wszystkie aktywne kolumny sortowania w kolejności priorytetów, a model posortowanych wierszy stosuje te kryteria kolejno.

Filtrowanie globalne

Filtrowanie globalne można włączyć, importując getFilteredRowModel i dodając stan globalFilter oraz procedurę obsługi onGlobalFilterChange. Należy połączyć element input ze stanem, aby filtrować wszystkie kolumny jednocześnie.

Filtr globalny domyślnie używa strategii fuzzy match lub includes; można ją skonfigurować za pomocą filterFns.

Filtrowanie na poziomie kolumny

Poszczególne kolumny mogą udostępniać własne filtry za pomocą column.getFilterValue() i column.setFilterValue(). Pod każdym nagłówkiem kolumny należy dodać pole wejściowe i połączyć je z tymi metodami.

Filtry kolumn i filtry globalne są stosowane łącznie: aby wiersz pojawił się w przefiltrowanym modelu wierszy, musi przejść przez wszystkie aktywne filtry.

Włączanie paginacji

Należy zaimportować getPaginationRowModel i dodać je do konfiguracji useReactTable wraz z obiektem stanu paginacji (pageIndex i pageSize) oraz procedurą obsługi onPaginationChange.

Model paginowanych wierszy wybiera z przefiltrowanych i posortowanych wierszy tylko fragment należący do bieżącej strony.

Nawigowanie po stronach

Instancja tabeli udostępnia metody table.nextPage(), table.previousPage(), table.firstPage() i table.lastPage() do nawigacji. Za pomocą table.getCanNextPage() i table.getCanPreviousPage() można wyłączać przyciski na granicach paginacji.

table.setPageIndex(n) przechodzi bezpośrednio do określonej strony, a table.setPageSize(n) zmienia liczbę wierszy wyświetlanych na stronie.

Informacje o paginacji

table.getPageCount() zwraca całkowitą liczbę stron na podstawie liczby przefiltrowanych wierszy podzielonej przez pageSize. table.getState().pagination.pageIndex zawiera bieżący indeks strony numerowany od zera.

Za pomocą tych wartości można zbudować w interfejsie paginacji licznik stron, na przykład "Strona 3 z 12".

Łączenie modeli wierszy

Modele wierszy można łączyć: getCoreRowModel udostępnia podstawę, getFilteredRowModel opakowuje ją i stosuje filtry, getSortedRowModel opakowuje przefiltrowane dane i je sortuje, a getPaginationRowModel wybiera z wyniku fragment należący do bieżącej strony.

Kolejność ma znaczenie: sortowanie odbywa się po filtrowaniu, a paginacja jest wykonywana na końcu.

Kwestie wydajności

TanStack Table wewnętrznie zapamiętuje wyniki obliczeń modeli wierszy. Sortowanie i filtrowanie dużych zbiorów danych jest wydajne, ponieważ ponownie obliczane są tylko zmienione modele wierszy.

W przypadku bardzo dużych zbiorów danych (100 000 lub więcej wierszy) należy połączyć paginację z wirtualizacją (react-virtual), aby uniknąć jednoczesnego renderowania wszystkich wierszy strony.

Podsumowanie sortowania, filtrowania i paginacji

Należy połączyć getSortedRowModel ze stanem sortowania, getFilteredRowModel ze stanem globalFilter i filtrów kolumn oraz getPaginationRowModel ze stanem paginacji. Każda z tych funkcji jest opcjonalna i dobrze współdziała z pozostałymi.

Nagłówki kolumn sterują sortowaniem za pomocą getToggleSortingHandler, pola wejściowe sterują filtrowaniem za pomocą setFilterValue i onGlobalFilterChange, a przyciski sterują paginacją za pomocą nextPage, previousPage i setPageIndex.

Stan paginacji TanStack Table

Jaki obiekt przechowuje bieżący indeks strony i rozmiar strony w stanie paginacji TanStack Table?

Podsumowanie lekcji

Sortowanie wymaga getSortedRowModel, stanu sortowania oraz procedur obsługi kliknięcia nagłówka kolumny. Filtrowanie korzysta z getFilteredRowModel oraz globalnego i przypisanego do kolumn stanu filtrów. Paginacja korzysta z getPaginationRowModel oraz stanu pageIndex i pageSize.

Wszystkie trzy modele wierszy łączą się automatycznie: najpierw filtrowanie, następnie sortowanie, a na końcu paginacja.

Często zadawane pytania

Czy lekcja „Sortowanie, filtrowanie i paginacja” jest bezpłatna?

Tak — pełny tekst „Sortowanie, filtrowanie i paginacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Sortowanie, filtrowanie i paginacja”?

Włączać sortowanie kolumn, filtrowanie globalne i kolumnowe oraz paginację po stronie klienta za pomocą funkcji TanStack Table Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Sortowanie, filtrowanie i paginacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Filozofia TanStack Table i projektowanie headless
  2. Definiowanie kolumn i renderowanie wierszy
  3. Sortowanie, filtrowanie i paginacja
  4. Wybór wierszy i tabele wirtualizowane
← Powrót do React Academy