Tilføjelse af Paginering til en Next.js-App
For at give brugerne mulighed for at navigere mellem forskellige sider og se alle fakturaer, implementeres paginering ved hjælp af URL-parametre, på samme måde som søgefunktionen.
Tilbage til projektet
Trin 1
- Hvis du navigerer til
Pagination-komponenten, vil du se, at det er en klientkomponent. For at undgå at afsløre databasehemmeligheder, bør du undlade at hente data på klientsiden. Hent i stedet dataene på serversiden og videregiv dem som en prop til komponenten; - I
app/dashboard/invoices/page.tsx, importér en ny funktion kaldetfetchInvoicesPagesog videregiv søgeforespørgslen frasearchParamssom et argument:fetchInvoicesPagesberegner det samlede antal sider baseret på søgeforespørgslen. For eksempel, hvis der er 12 matchende fakturaer med visning af 6 pr. side, vil det samlede antal sider være 2.
- Videregiv
totalPages-proppen til<Pagination/>-komponenten.
Trin 2
- Naviger til
app/ui/invoices/pagination.tsx; - Importér
usePathname- oguseSearchParams-hooks; - Brug disse hooks til at hente den aktuelle side og angive den nye side;
- Fjern kommenteringen af koden i denne komponent.
Bemærk
Din applikation kan midlertidigt gå i stykker, da
<Pagination/>-logikken endnu ikke er implementeret. Vi arbejder videre med det senere.
Trin 3
- Inde i
<Pagination>-komponenten, opret en ny funktion kaldetcreatePageURL; - Ligesom med søgefunktionen, brug
URLSearchParamstil at angive det nye sidenummer; - Brug
pathNametil at konstruere URL-strengen; - Fjern kommenteringen af variablen
allPages.
Trin 4
Sidste trin – når brugeren indtaster en ny søgeforespørgsel, er det vigtigt at nulstille sidenummeret til 1. For at gøre dette skal du opdatere handleSearch-funktionen i app/ui/search.tsx.
I praksis
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Tilføjelse af Paginering til en Next.js-App
Stryg for at vise menuen
For at give brugerne mulighed for at navigere mellem forskellige sider og se alle fakturaer, implementeres paginering ved hjælp af URL-parametre, på samme måde som søgefunktionen.
Tilbage til projektet
Trin 1
- Hvis du navigerer til
Pagination-komponenten, vil du se, at det er en klientkomponent. For at undgå at afsløre databasehemmeligheder, bør du undlade at hente data på klientsiden. Hent i stedet dataene på serversiden og videregiv dem som en prop til komponenten; - I
app/dashboard/invoices/page.tsx, importér en ny funktion kaldetfetchInvoicesPagesog videregiv søgeforespørgslen frasearchParamssom et argument:fetchInvoicesPagesberegner det samlede antal sider baseret på søgeforespørgslen. For eksempel, hvis der er 12 matchende fakturaer med visning af 6 pr. side, vil det samlede antal sider være 2.
- Videregiv
totalPages-proppen til<Pagination/>-komponenten.
Trin 2
- Naviger til
app/ui/invoices/pagination.tsx; - Importér
usePathname- oguseSearchParams-hooks; - Brug disse hooks til at hente den aktuelle side og angive den nye side;
- Fjern kommenteringen af koden i denne komponent.
Bemærk
Din applikation kan midlertidigt gå i stykker, da
<Pagination/>-logikken endnu ikke er implementeret. Vi arbejder videre med det senere.
Trin 3
- Inde i
<Pagination>-komponenten, opret en ny funktion kaldetcreatePageURL; - Ligesom med søgefunktionen, brug
URLSearchParamstil at angive det nye sidenummer; - Brug
pathNametil at konstruere URL-strengen; - Fjern kommenteringen af variablen
allPages.
Trin 4
Sidste trin – når brugeren indtaster en ny søgeforespørgsel, er det vigtigt at nulstille sidenummeret til 1. For at gøre dette skal du opdatere handleSearch-funktionen i app/ui/search.tsx.
I praksis
Tak for dine kommentarer!