usePagination
Macht aus einer Seite und einer Seitenzahl die Liste der zu rendernden Seiten und Ellipsen und hält ihre Länge beim Blättern konstant.
7 itemspnpm dlx shadcn@latest add https://hextaui.com/r/use-pagination.jsonFügt den Hook und alles, wovon er abhängt, zu deinem Projekt hinzu.
Kopiere den folgenden Code und füge ihn in dein Projekt ein.
hooks/use-pagination.ts Passe die Importpfade an dein Projekt-Setup an.
Der Hook rechnet nur. Er gibt die Liste der zu rendernden Seiten und Ellipsen zurück und überlässt dir das Markup, so baut Pagination seine Links. Nutze ihn, um einen eigenen Pager zu bauen, etwa Punkte für ein Karussell oder eine Seitenauswahl in einem Tabellenfuß.
Die Liste zeigt immer die ersten und letzten boundaries Seiten und siblings Seiten auf jeder Seite der aktuellen. Eine Ellipse füllt jede Lücke von zwei oder mehr Seiten. Eine Lücke von genau einer Seite zeigt stattdessen diese Seite, da eine Ellipse dort nicht mehr verbergen würde, als sie selbst einnimmt.
Sobald es genug Seiten gibt, hat die Liste immer 2 × boundaries + 2 × siblings + 3 Items. Nahe den Enden weitet sich das Fenster, statt zu schrumpfen. Da sich die Länge nie ändert, behält der Pager seine Breite, und die Buttons für Weiter und Zurück bleiben beim Durchklicken unter dem Zeiger.
countundpagewerden begrenzt: Eine Seite hinter dem Ende wird zur letzten Seite, und alles, was keine endliche Zahl ist, fällt auf den Standard zurück.- Ein
countvon 0 gibt keine Items und einepagevon 0 zurück, sodass eine leere Tabelle ohne Sonderfall nichts rendern kann. siblingsundboundariesreichen von 0 bis 10.- Ellipsen haben eine stabile
positionvonstartoderend. Nutze sie als React-Key.
Punkte
Mit boundaries: 0 ist die Liste nur ein Fenster um die aktuelle Seite. Ellipsen werden zu kleinen Punkten, sodass eine lange Reihe von Slides nie mehr als fünf Ziele braucht.
- Markiere die aktuelle Seite mit
aria-current="page"und umschließe die Liste mit einem<nav>mit Label. - Verberge Ellipsen mit
aria-hiddenvor Screenreadern. Sie tragen keine Information, die die Seitenzahlen nicht auch tragen. - Zeige Seitenzahlen mit
tabular-nums, damit die Buttons ihre Breite nicht ändern, wenn sich die Ziffern ändern.
| Prop | Typ | Standard |
|---|---|---|
countGesamtzahl der Seiten. | number | – |
pageDie aktuelle Seite, bei 1 beginnend. | number | 1 |
siblingsSeiten, die auf jeder Seite der aktuellen Seite angezeigt werden. | number | 1 |
boundariesSeiten, die immer am Anfang und am Ende angezeigt werden. | number | 1 |
| Property | Beschreibung |
|---|---|
items | PaginationItemData[], der Reihe nach zu rendern. |
page | Die begrenzte aktuelle Seite. |
count | Die begrenzte Seitenanzahl. |
hasPrevious | Ob es eine Seite vor dieser gibt. |
hasNext | Ob es eine Seite nach dieser gibt. |
Pagination.