Udvikling af Søgefunktionalitet
Teori
Før implementering af søgefunktionalitet er det vigtigt at forstå disse klient-hooks.
useSearchParams;- Giver adgang til aktuelle URL-parametre;
- Eksempel: For URL'en
/dashboard/invoices?page=1&query=pendingreturnerer den{page: '1', query: 'pending'}.
usePathname;- Aflæser den aktuelle URL's sti;
- Eksempel: For ruten
domain/dashboard/invoicesreturnererusePathname"/dashboard/invoices".
useRouter.- Muliggør navigation mellem ruter i klientkomponenter og tilbyder flere metoder.
Oversigt over implementeringstrin:
- Indfang brugerinput;
- Opdater URL'en med søgeparametre;
- Synkronisér URL'en med inputfeltet;
- Opdater tabellen, så den afspejler søgeforespørgslen.
Tilbage til projektet
1. Indfang brugerinput
- Åbn
Search-komponenten (app/ui/search.tsx); - Bemærk brugen af
'use client', hvilket angiver tilgængeligheden af event-lyttere og hooks; - Udnyt funktionen
handleSearch, som aktiveres ved hver ændring i inputfeltet.
Efter implementering skal du åbne udviklerkonsollen i din browser. Du bør se enhver tekst, der indtastes i inputfeltet, blive vist i browserens konsol.
2. Opdater URL'en med søgeparametre
- Importér
useSearchParamshooken fra'next/navigation'og tildel den til en variabel; - Opret inden for
handleSearch-funktionen en ny instans afURLSearchParamsved at bruge den tidligere definerede variabel (searchParams). Dette værktøj giver metoder til at håndtere URL-forespørgselsparametre; - Angiv parameterstrengen baseret på brugerens input. Hvis inputfeltet er tomt, skal det slettes;
- Benyt
useRouterogusePathnamehooks fra'next/navigation'og brugreplace-metoden frauseRouter()inden forhandleSearch.${pathname}repræsenterer den aktuelle sti, f.eks."/dashboard/invoices";- Når brugeren skriver i søgefeltet, konverterer
params.toString()inputtet til et URL-venligt format; replace(${pathname}?${params.toString()})opdaterer URL'en med brugerens søgedata (f.eks./dashboard/invoices?query=qwerty).
URL'en opdateres uden sideopdatering takket være Next.js's klient-side navigation.
Efter implementering vil enhver tekst indtastet i inputfeltet blive afspejlet i URL'en.
3. Hold URL'en synkroniseret med inputfeltet
For at sikre at inputfeltet matcher URL'en og bliver udfyldt, når den deles, anvendes defaultValue ved at læse fra searchParams.
4. Opdater tabellen for at afspejle søgeforespørgslen
Til sidst opdateres Table-komponenten for at afspejle søgeforespørgslen. Sidekomponenter accepterer en prop kaldet searchParams. Overfør de aktuelle URL-parametre til <Table>-komponenten.
Husk at fjerne kommenteringen af Table-komponenten.
Fremragende! Du har nu tilføjet søgefunktionalitet til din app. Prøv det af – fungerer det? 😊
I næste kapitel ser vi nærmere på paginering, da kun 6 fakturaer i øjeblikket er synlige på siden.
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
Awesome!
Completion rate improved to 2.08
Udvikling af Søgefunktionalitet
Stryg for at vise menuen
Teori
Før implementering af søgefunktionalitet er det vigtigt at forstå disse klient-hooks.
useSearchParams;- Giver adgang til aktuelle URL-parametre;
- Eksempel: For URL'en
/dashboard/invoices?page=1&query=pendingreturnerer den{page: '1', query: 'pending'}.
usePathname;- Aflæser den aktuelle URL's sti;
- Eksempel: For ruten
domain/dashboard/invoicesreturnererusePathname"/dashboard/invoices".
useRouter.- Muliggør navigation mellem ruter i klientkomponenter og tilbyder flere metoder.
Oversigt over implementeringstrin:
- Indfang brugerinput;
- Opdater URL'en med søgeparametre;
- Synkronisér URL'en med inputfeltet;
- Opdater tabellen, så den afspejler søgeforespørgslen.
Tilbage til projektet
1. Indfang brugerinput
- Åbn
Search-komponenten (app/ui/search.tsx); - Bemærk brugen af
'use client', hvilket angiver tilgængeligheden af event-lyttere og hooks; - Udnyt funktionen
handleSearch, som aktiveres ved hver ændring i inputfeltet.
Efter implementering skal du åbne udviklerkonsollen i din browser. Du bør se enhver tekst, der indtastes i inputfeltet, blive vist i browserens konsol.
2. Opdater URL'en med søgeparametre
- Importér
useSearchParamshooken fra'next/navigation'og tildel den til en variabel; - Opret inden for
handleSearch-funktionen en ny instans afURLSearchParamsved at bruge den tidligere definerede variabel (searchParams). Dette værktøj giver metoder til at håndtere URL-forespørgselsparametre; - Angiv parameterstrengen baseret på brugerens input. Hvis inputfeltet er tomt, skal det slettes;
- Benyt
useRouterogusePathnamehooks fra'next/navigation'og brugreplace-metoden frauseRouter()inden forhandleSearch.${pathname}repræsenterer den aktuelle sti, f.eks."/dashboard/invoices";- Når brugeren skriver i søgefeltet, konverterer
params.toString()inputtet til et URL-venligt format; replace(${pathname}?${params.toString()})opdaterer URL'en med brugerens søgedata (f.eks./dashboard/invoices?query=qwerty).
URL'en opdateres uden sideopdatering takket være Next.js's klient-side navigation.
Efter implementering vil enhver tekst indtastet i inputfeltet blive afspejlet i URL'en.
3. Hold URL'en synkroniseret med inputfeltet
For at sikre at inputfeltet matcher URL'en og bliver udfyldt, når den deles, anvendes defaultValue ved at læse fra searchParams.
4. Opdater tabellen for at afspejle søgeforespørgslen
Til sidst opdateres Table-komponenten for at afspejle søgeforespørgslen. Sidekomponenter accepterer en prop kaldet searchParams. Overfør de aktuelle URL-parametre til <Table>-komponenten.
Husk at fjerne kommenteringen af Table-komponenten.
Fremragende! Du har nu tilføjet søgefunktionalitet til din app. Prøv det af – fungerer det? 😊
I næste kapitel ser vi nærmere på paginering, da kun 6 fakturaer i øjeblikket er synlige på siden.
I praksis
Tak for dine kommentarer!