Utveckling av Sökfunktionalitet
Svep för att visa menyn
Teori
Innan sökfunktionen implementeras är det viktigt att förstå dessa klient-hooks.
useSearchParams;- Ger åtkomst till aktuella URL-parametrar;
- Exempel: För URL:en
/dashboard/invoices?page=1&query=pendingreturneras{page: '1', query: 'pending'}.
usePathname;- Läser av den aktuella URL:ens sökväg;
- Exempel: För routen
domain/dashboard/invoicesreturnerarusePathname"/dashboard/invoices".
useRouter.- Underlättar navigering mellan rutter i klientkomponenter och erbjuder flera metoder.
Översikt av implementeringssteg:
- Fånga användarens inmatning;
- Uppdatera URL:en med sökparametrar;
- Håll URL:en synkroniserad med inmatningsfältet;
- Uppdatera tabellen för att återspegla sökfrågan.
Tillbaka till projektet
1. Fånga användarens inmatning
- Öppna
Search-komponenten (app/ui/search.tsx); - Observera användningen av
'use client', vilket indikerar tillgänglighet för eventlyssnare och hooks; - Använd funktionen
handleSearch, som utlöses vid varje ändring i inmatningsfältet.
Efter implementering, öppna utvecklarkonsolen i din webbläsare. All text som matas in i inmatningsfältet ska nu visas i webbläsarens konsol.
2. Uppdatera URL:en med sökparametrar
- Importera hooken
useSearchParamsfrån'next/navigation'och tilldela den till en variabel; - Skapa inuti funktionen
handleSearchen ny instans avURLSearchParamsmed hjälp av den tidigare definierade variabeln (searchParams). Detta verktyg tillhandahåller metoder för att hantera URL:ens frågeparametrar; - Ange parametersträngen baserat på användarens inmatning. Om inmatningen är tom, ta bort den;
- Använd hookarna
useRouterochusePathnamefrån'next/navigation'och använd metodenreplacefrånuseRouter()ihandleSearch.${pathname}representerar den aktuella sökvägen, t.ex."/dashboard/invoices";- När användaren skriver i sökfältet konverterar
params.toString()inmatningen till ett URL-vänligt format; replace(${pathname}?${params.toString()})uppdaterar URL:en med användarens sökdata (t.ex./dashboard/invoices?query=qwerty).
URL:en uppdateras utan sidomladdning tack vare Next.js klientbaserade navigering.
Efter implementering kommer all text som skrivs in i fältet att återspeglas i URL:en.
3. Håll URL:en synkroniserad med inmatningsfältet
För att säkerställa att inmatningsfältet matchar URL:en och fylls i när den delas, använd defaultValue genom att läsa från searchParams.
4. Uppdatera tabellen för att återspegla sökfrågan
Slutligen uppdaterar vi Table-komponenten för att återspegla sökfrågan. Sidkomponenter accepterar en prop som heter searchParams. Skicka aktuella URL-parametrar till <Table>-komponenten.
Glöm inte att avkommentera Table-komponenten.
Fantastiskt! Du har nu lagt till sökfunktionalitet i din app. Prova gärna – fungerar det? 😊
I nästa kapitel går vi igenom paginering eftersom endast 6 fakturor för närvarande visas på sidan.
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