Lägga till Paginering i en Next.js-App
För att möjliggöra för användare att navigera mellan olika sidor och visa alla fakturor, implementera paginering med hjälp av URL-parametrar, liknande sökfunktionen.
Tillbaka till projektet
Steg 1
- Om du navigerar till
Pagination-komponenten ser du att det är en klientkomponent. För att undvika att exponera databashemligheter, hämta inte data på klientsidan. Hämta istället data på serversidan och skicka den som en prop till komponenten; - I
app/dashboard/invoices/page.tsx, importera en ny funktion som heterfetchInvoicesPagesoch skicka sökfrågan frånsearchParamssom ett argument:fetchInvoicesPagesberäknar det totala antalet sidor baserat på sökfrågan. Om det till exempel finns 12 matchande fakturor med 6 per sida, blir det totala antalet sidor 2.
- Skicka prop:en
totalPagestill<Pagination/>-komponenten.
Steg 2
- Navigera till
app/ui/invoices/pagination.tsx; - Importera hookarna
usePathnameochuseSearchParams; - Använd dessa hooks för att hämta aktuell sida och sätta ny sida;
- Avkommentera koden i denna komponent.
Notera
Din applikation kan tillfälligt sluta fungera eftersom logiken för
<Pagination/>ännu inte är implementerad. Vi kommer att arbeta vidare med detta senare.
Steg 3
- Skapa en ny funktion som heter
<Pagination>inuticreatePageURL-komponenten; - Använd liknande metod som för sökfunktionen, använd
URLSearchParamsför att sätta det nya sidnumret; - Använd
pathNameför att konstruera URL-strängen; - Avkommentera variabeln
allPages.
Steg 4
Sista steget – när användaren anger en ny sökfråga är det viktigt att återställa sidnumret till 1. För att göra detta, uppdatera funktionen handleSearch i app/ui/search.tsx.
I praktiken
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Lägga till Paginering i en Next.js-App
Svep för att visa menyn
För att möjliggöra för användare att navigera mellan olika sidor och visa alla fakturor, implementera paginering med hjälp av URL-parametrar, liknande sökfunktionen.
Tillbaka till projektet
Steg 1
- Om du navigerar till
Pagination-komponenten ser du att det är en klientkomponent. För att undvika att exponera databashemligheter, hämta inte data på klientsidan. Hämta istället data på serversidan och skicka den som en prop till komponenten; - I
app/dashboard/invoices/page.tsx, importera en ny funktion som heterfetchInvoicesPagesoch skicka sökfrågan frånsearchParamssom ett argument:fetchInvoicesPagesberäknar det totala antalet sidor baserat på sökfrågan. Om det till exempel finns 12 matchande fakturor med 6 per sida, blir det totala antalet sidor 2.
- Skicka prop:en
totalPagestill<Pagination/>-komponenten.
Steg 2
- Navigera till
app/ui/invoices/pagination.tsx; - Importera hookarna
usePathnameochuseSearchParams; - Använd dessa hooks för att hämta aktuell sida och sätta ny sida;
- Avkommentera koden i denna komponent.
Notera
Din applikation kan tillfälligt sluta fungera eftersom logiken för
<Pagination/>ännu inte är implementerad. Vi kommer att arbeta vidare med detta senare.
Steg 3
- Skapa en ny funktion som heter
<Pagination>inuticreatePageURL-komponenten; - Använd liknande metod som för sökfunktionen, använd
URLSearchParamsför att sätta det nya sidnumret; - Använd
pathNameför att konstruera URL-strängen; - Avkommentera variabeln
allPages.
Steg 4
Sista steget – när användaren anger en ny sökfråga är det viktigt att återställa sidnumret till 1. För att göra detta, uppdatera funktionen handleSearch i app/ui/search.tsx.
I praktiken
Tack för dina kommentarer!