usePagination
Transforma uma página e uma contagem de páginas na lista de páginas e reticências a renderizar, mantendo o comprimento estável conforme a página muda.
7 itemspnpm dlx shadcn@latest add https://hextaui.com/r/use-pagination.jsonAdiciona o hook e tudo de que ele depende ao seu projeto.
Copie e cole o código a seguir no seu projeto.
hooks/use-pagination.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
O hook só faz a conta. Retorna a lista de páginas e reticências a renderizar e deixa a marcação com você, que é como Pagination monta seus links. Use-o para montar seu próprio paginador, como pontos para um carrossel ou um seletor de página no rodapé de uma tabela.
A lista sempre mostra as primeiras e últimas boundaries páginas, e siblings páginas de cada lado da atual. Uma reticência preenche qualquer intervalo de duas páginas ou mais. Um intervalo de exatamente uma página mostra essa página, porque ali a reticência não esconderia mais do que ocupa.
Quando há páginas suficientes, a lista sempre tem 2 × boundaries + 2 × siblings + 3 itens. Perto das pontas, a janela se alarga em vez de encolher. Como o comprimento nunca muda, o paginador mantém a largura, e os botões de próximo e anterior ficam sob o ponteiro enquanto você clica pelas páginas.
countepagesão limitados: uma página além do fim vira a última página, e qualquer coisa que não seja um número finito volta ao padrão.- Um
countde 0 retorna nenhum item e umpagede 0, então uma tabela vazia pode não renderizar nada sem um caso especial. siblingseboundariesvão de 0 a 10.- As reticências têm uma
positionestável destartouend. Use-a como key do React.
Pontos
Com boundaries: 0 a lista é apenas uma janela em volta da página atual. As reticências viram pontos pequenos, então um conjunto longo de slides nunca precisa de mais de cinco alvos.
- Marque a página atual com
aria-current="page"e envolva a lista em um<nav>com um rótulo. - Oculte as reticências dos leitores de tela com
aria-hidden. Elas não carregam nenhuma informação que os números de página não tenham. - Mostre os números de página com
tabular-numspara os botões não mudarem de largura quando os dígitos mudam.
| Prop | Tipo | Padrão |
|---|---|---|
countNúmero total de páginas. | number | – |
pageA página atual, começando em 1. | number | 1 |
siblingsPáginas a mostrar de cada lado da página atual. | number | 1 |
boundariesPáginas a mostrar sempre no início e no fim. | number | 1 |
| Propriedade | Descrição |
|---|---|
items | PaginationItemData[] a renderizar, em ordem. |
page | A página atual limitada. |
count | A contagem de páginas limitada. |
hasPrevious | Se há uma página antes desta. |
hasNext | Se há uma página depois desta. |
Pagination.