Aggiunta della Paginazione a un'App Next.js
Per consentire agli utenti di navigare tra le diverse pagine e visualizzare tutte le fatture, implementare la paginazione utilizzando i parametri URL, in modo simile alla funzionalità di ricerca.
Torna al progetto
Passo 1
- Navigando nel componente
Pagination, si nota che è un componente client. Per evitare di esporre segreti del database, evitare di recuperare dati lato client. Invece, recuperare i dati lato server e passarli come prop al componente; - In
app/dashboard/invoices/page.tsx, importare una nuova funzione chiamatafetchInvoicesPagese passare la query di ricerca dasearchParamscome argomento:fetchInvoicesPagescalcola il numero totale di pagine in base alla query di ricerca. Ad esempio, se ci sono 12 fatture corrispondenti con una visualizzazione di 6 per pagina, il numero totale di pagine sarà 2.
- Passare la prop
totalPagesal componente<Pagination/>.
Passo 2
- Navigare in
app/ui/invoices/pagination.tsx; - Importare gli hook
usePathnameeuseSearchParams; - Utilizzare questi hook per recuperare la pagina corrente e impostare la nuova pagina;
- Decommentare il codice in questo componente.
Nota
L'applicazione potrebbe temporaneamente non funzionare poiché la logica di
<Pagination/>non è ancora implementata. Verrà sviluppata successivamente.
Passo 3
- All'interno del componente
<Pagination>, creare una nuova funzione chiamatacreatePageURL; - In modo simile alla funzionalità di ricerca, utilizzare
URLSearchParamsper impostare il nuovo numero di pagina; - Utilizzare
pathNameper costruire la stringa URL; - Decommentare la variabile
allPages.
Passaggio 4
Passaggio finale - quando l'utente inserisce una nuova query di ricerca, è fondamentale reimpostare il numero di pagina a 1. Per ottenere questo risultato, aggiorna la funzione handleSearch in app/ui/search.tsx.
In pratica
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how the fetchInvoicesPages function works?
How does the generatePagination function determine which page numbers to show?
What should I do if the pagination is not updating when I search for a new term?
Awesome!
Completion rate improved to 2.08
Aggiunta della Paginazione a un'App Next.js
Scorri per mostrare il menu
Per consentire agli utenti di navigare tra le diverse pagine e visualizzare tutte le fatture, implementare la paginazione utilizzando i parametri URL, in modo simile alla funzionalità di ricerca.
Torna al progetto
Passo 1
- Navigando nel componente
Pagination, si nota che è un componente client. Per evitare di esporre segreti del database, evitare di recuperare dati lato client. Invece, recuperare i dati lato server e passarli come prop al componente; - In
app/dashboard/invoices/page.tsx, importare una nuova funzione chiamatafetchInvoicesPagese passare la query di ricerca dasearchParamscome argomento:fetchInvoicesPagescalcola il numero totale di pagine in base alla query di ricerca. Ad esempio, se ci sono 12 fatture corrispondenti con una visualizzazione di 6 per pagina, il numero totale di pagine sarà 2.
- Passare la prop
totalPagesal componente<Pagination/>.
Passo 2
- Navigare in
app/ui/invoices/pagination.tsx; - Importare gli hook
usePathnameeuseSearchParams; - Utilizzare questi hook per recuperare la pagina corrente e impostare la nuova pagina;
- Decommentare il codice in questo componente.
Nota
L'applicazione potrebbe temporaneamente non funzionare poiché la logica di
<Pagination/>non è ancora implementata. Verrà sviluppata successivamente.
Passo 3
- All'interno del componente
<Pagination>, creare una nuova funzione chiamatacreatePageURL; - In modo simile alla funzionalità di ricerca, utilizzare
URLSearchParamsper impostare il nuovo numero di pagina; - Utilizzare
pathNameper costruire la stringa URL; - Decommentare la variabile
allPages.
Passaggio 4
Passaggio finale - quando l'utente inserisce una nuova query di ricerca, è fondamentale reimpostare il numero di pagina a 1. Per ottenere questo risultato, aggiorna la funzione handleSearch in app/ui/search.tsx.
In pratica
Grazie per i tuoi commenti!