usePagination
Transforme une page et un nombre de pages en liste de pages et de points de suspension à afficher, en gardant une longueur stable quand la page change.
7 itemspnpm dlx shadcn@latest add https://hextaui.com/r/use-pagination.jsonAjoute le hook et tout ce dont il dépend à votre projet.
Copiez et collez le code suivant dans votre projet.
hooks/use-pagination.ts Mettez à jour les chemins d’import selon la configuration de votre projet.
Le hook ne fait que le calcul. Il renvoie la liste des pages et des points de suspension à rendre et vous laisse le balisage, ce qui est la manière dont Pagination construit ses liens. Utilisez-le pour construire votre propre pagination, comme des points pour un carrousel ou un sélecteur de page dans le pied d'un tableau.
La liste affiche toujours les boundaries premières et dernières pages, et siblings pages de chaque côté de la page courante. Des points de suspension comblent tout écart de deux pages ou plus. Un écart d'exactement une page affiche cette page à la place, car des points de suspension n'y cacheraient pas plus qu'ils ne prennent de place.
Dès qu'il y a assez de pages, la liste contient toujours 2 × boundaries + 2 × siblings + 3 éléments. Près des extrémités, la fenêtre s'élargit au lieu de rétrécir. Comme la longueur ne change jamais, la pagination garde sa largeur, et les boutons suivant et précédent restent sous le pointeur pendant que vous cliquez.
countetpagesont bornés : une page au-delà de la fin devient la dernière page, et tout ce qui n'est pas un nombre fini revient à la valeur par défaut.- Un
countde 0 renvoie aucun élément et unepagede 0, si bien qu'un tableau vide peut ne rien afficher sans cas particulier. siblingsetboundariesvont de 0 à 10.- Les points de suspension ont une
positionstable,startouend. Utilisez-la comme key React.
Points
Avec boundaries: 0, la liste n'est qu'une fenêtre autour de la page courante. Les points de suspension deviennent de petits points, si bien qu'une longue série de diapositives n'a jamais besoin de plus de cinq cibles.
- Marquez la page courante avec
aria-current="page"et entourez la liste d'un<nav>avec un label. - Masquez les points de suspension aux lecteurs d'écran avec
aria-hidden. Ils ne portent aucune information que les numéros de page n'apportent pas. - Affichez les numéros de page avec
tabular-numspour que les boutons ne changent pas de largeur quand les chiffres changent.
| Prop | Type | Par défaut |
|---|---|---|
countNombre total de pages. | number | – |
pageLa page courante, à partir de 1. | number | 1 |
siblingsPages à afficher de chaque côté de la page courante. | number | 1 |
boundariesPages à toujours afficher au début et à la fin. | number | 1 |
| Propriété | Description |
|---|---|
items | PaginationItemData[] à rendre, dans l'ordre. |
page | La page courante bornée. |
count | Le nombre de pages borné. |
hasPrevious | Indique s'il existe une page avant celle-ci. |
hasNext | Indique s'il existe une page après celle-ci. |
Pagination.