usePagination
Convierte una página y un número de páginas en la lista de páginas y puntos suspensivos que se renderizan, manteniendo su longitud estable mientras la página cambia.
7 itemspnpm dlx shadcn@latest add https://hextaui.com/r/use-pagination.jsonAñade el hook y todo lo que necesita a tu proyecto.
Copia y pega el siguiente código en tu proyecto.
hooks/use-pagination.ts Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
El hook solo hace el cálculo. Devuelve la lista de páginas y puntos suspensivos que se renderizan y te deja el marcado, que es como Pagination construye sus enlaces. Úsalo para crear tu propio paginador, como puntos para un carrusel o un selector de página en el pie de una tabla.
La lista siempre muestra las primeras y últimas boundaries páginas, y siblings páginas a cada lado de la actual. Unos puntos suspensivos llenan cualquier hueco de dos páginas o más. Un hueco de exactamente una página muestra esa página, porque unos puntos suspensivos ahí no ocultarían más de lo que ocupan.
Cuando hay suficientes páginas, la lista siempre tiene 2 × boundaries + 2 × siblings + 3 elementos. Cerca de los extremos, la ventana se ensancha en lugar de encogerse. Como la longitud nunca cambia, el paginador mantiene su ancho, y los botones siguiente y anterior se quedan bajo el puntero mientras pasas de página.
countypagese ajustan: una página más allá del final se convierte en la última página, y cualquier cosa que no sea un número finito vuelve al valor por defecto.- Un
countde 0 devuelve cero elementos y unapagede 0, así que una tabla vacía puede no renderizar nada sin un caso especial. siblingsyboundariesvan de 0 a 10.- Los puntos suspensivos tienen una
positionestable destartoend. Úsala como key de React.
Puntos
Con boundaries: 0 la lista es solo una ventana alrededor de la página actual. Los puntos suspensivos se convierten en puntos pequeños, así que un conjunto largo de diapositivas nunca necesita más de cinco destinos.
- Marca la página actual con
aria-current="page"y envuelve la lista en un<nav>con una etiqueta. - Oculta los puntos suspensivos a los lectores de pantalla con
aria-hidden. No aportan información que los números de página no den. - Muestra los números de página con
tabular-numspara que los botones no cambien de ancho al cambiar los dígitos.
| Prop | Tipo | Predeterminado |
|---|---|---|
countNúmero total de páginas. | number | – |
pageLa página actual, empezando en 1. | number | 1 |
siblingsPáginas que se muestran a cada lado de la página actual. | number | 1 |
boundariesPáginas que se muestran siempre al principio y al final. | number | 1 |
| Propiedad | Descripción |
|---|---|
items | PaginationItemData[] que se renderiza, en orden. |
page | La página actual ajustada. |
count | El número de páginas ajustado. |
hasPrevious | Si hay una página antes de esta. |
hasNext | Si hay una página después de esta. |
Pagination.