Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Legge til paginering i en Next.js-app | Avanserte Next.js-funksjoner og Optimaliseringer
Next.js 14-mestring for Bygging av Moderne Webapplikasjoner

bookLegge til paginering i en Next.js-app

For å la brukere navigere mellom ulike sider og vise alle fakturaer, implementeres paginering ved hjelp av URL-parametere, på samme måte som søkefunksjonaliteten.

Tilbake til prosjektet

Steg 1

  1. Hvis du navigerer til Pagination-komponenten, ser du at det er en klientkomponent. For å unngå å eksponere databasehemmeligheter, bør du unngå å hente data på klientsiden. Hent i stedet dataene på serveren og send dem som en prop til komponenten;
  2. I app/dashboard/invoices/page.tsx, importer en ny funksjon kalt fetchInvoicesPages og send søkespørringen fra searchParams som et argument:
    • fetchInvoicesPages beregner totalt antall sider basert på søkespørringen. For eksempel, hvis det finnes 12 samsvarende fakturaer og 6 vises per side, vil totalt antall sider være 2.
  3. Send totalPages-propen til <Pagination/>-komponenten.

Steg 2

  1. Naviger til app/ui/invoices/pagination.tsx;
  2. Importer hookene usePathname og useSearchParams;
  3. Bruk disse hookene for å hente gjeldende side og sette ny side;
  4. Fjern kommentaren fra koden i denne komponenten.

Merk

Applikasjonen din kan midlertidig slutte å fungere ettersom logikken for <Pagination/> ennå ikke er implementert. Vi vil arbeide med dette senere.

Steg 3

  1. Inne i <Pagination>-komponenten, opprett en ny funksjon kalt createPageURL;
  2. På samme måte som med søkefunksjonaliteten, bruk URLSearchParams for å sette nytt sidenummer;
  3. Bruk pathName for å konstruere URL-strengen;
  4. Fjern kommentaren fra variabelen allPages.

Steg 4

Siste steg – når brukeren skriver inn et nytt søk, er det viktig å tilbakestille sidenummeret til 1. For å oppnå dette, oppdater handleSearch-funksjonen i app/ui/search.tsx.

I praksis

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 2.08

bookLegge til paginering i en Next.js-app

Sveip for å vise menyen

For å la brukere navigere mellom ulike sider og vise alle fakturaer, implementeres paginering ved hjelp av URL-parametere, på samme måte som søkefunksjonaliteten.

Tilbake til prosjektet

Steg 1

  1. Hvis du navigerer til Pagination-komponenten, ser du at det er en klientkomponent. For å unngå å eksponere databasehemmeligheter, bør du unngå å hente data på klientsiden. Hent i stedet dataene på serveren og send dem som en prop til komponenten;
  2. I app/dashboard/invoices/page.tsx, importer en ny funksjon kalt fetchInvoicesPages og send søkespørringen fra searchParams som et argument:
    • fetchInvoicesPages beregner totalt antall sider basert på søkespørringen. For eksempel, hvis det finnes 12 samsvarende fakturaer og 6 vises per side, vil totalt antall sider være 2.
  3. Send totalPages-propen til <Pagination/>-komponenten.

Steg 2

  1. Naviger til app/ui/invoices/pagination.tsx;
  2. Importer hookene usePathname og useSearchParams;
  3. Bruk disse hookene for å hente gjeldende side og sette ny side;
  4. Fjern kommentaren fra koden i denne komponenten.

Merk

Applikasjonen din kan midlertidig slutte å fungere ettersom logikken for <Pagination/> ennå ikke er implementert. Vi vil arbeide med dette senere.

Steg 3

  1. Inne i <Pagination>-komponenten, opprett en ny funksjon kalt createPageURL;
  2. På samme måte som med søkefunksjonaliteten, bruk URLSearchParams for å sette nytt sidenummer;
  3. Bruk pathName for å konstruere URL-strengen;
  4. Fjern kommentaren fra variabelen allPages.

Steg 4

Siste steg – når brukeren skriver inn et nytt søk, er det viktig å tilbakestille sidenummeret til 1. For å oppnå dette, oppdater handleSearch-funksjonen i app/ui/search.tsx.

I praksis

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 3
some-alt