Het Ontwikkelen van de Zoekfunctionaliteit
Theorie
Voordat de zoekfunctionaliteit wordt geïmplementeerd, is het essentieel om deze client hooks te begrijpen.
useSearchParams;- Biedt toegang tot de huidige URL-parameters;
- Voorbeeld: Voor de URL
/dashboard/invoices?page=1&query=pending, levert het{page: '1', query: 'pending'}.
usePathname;- Leest het huidige pad van de URL;
- Voorbeeld: Voor de route
domain/dashboard/invoices, geeftusePathname"/dashboard/invoices"terug.
useRouter.- Maakt navigeren tussen routes binnen clientcomponenten mogelijk en biedt meerdere methoden.
Overzicht van implementatiestappen:
- Gebruikersinvoer vastleggen;
- De URL bijwerken met zoekparameters;
- De URL gesynchroniseerd houden met het invoerveld;
- De tabel bijwerken om de zoekopdracht weer te geven.
Terug naar het project
1. Gebruikersinvoer vastleggen
- Open het
Search-component (app/ui/search.tsx); - Let op het gebruik van
'use client', wat aangeeft dat event listeners en hooks beschikbaar zijn; - Gebruik de functie
handleSearch, die wordt geactiveerd bij elke wijziging van de invoer.
Na implementatie, open de Developer Console in de browser. Alle tekst die in het invoerveld wordt getypt, moet zichtbaar zijn in de browserconsole.
2. Werk de URL bij met zoekparameters
- Importeer de
useSearchParamshook uit'next/navigation'en wijs deze toe aan een variabele; - Maak binnen de functie
handleSearcheen nieuwe instantie vanURLSearchParamsaan met behulp van de eerder gedefinieerde variabele (searchParams). Deze utility biedt methoden om URL-queryparameters te beheren; - Stel de parameterstring in op basis van de invoer van de gebruiker. Als de invoer leeg is, verwijder deze dan;
- Gebruik de hooks
useRouterenusePathnameuit'next/navigation'en pas dereplace-methode vanuseRouter()toe binnenhandleSearch.${pathname}vertegenwoordigt het huidige pad, bijvoorbeeld"/dashboard/invoices";- Terwijl de gebruiker typt in de zoekbalk, zet
params.toString()de invoer om naar een URL-vriendelijk formaat; replace(${pathname}?${params.toString()})werkt de URL bij met de zoekgegevens van de gebruiker (bijvoorbeeld/dashboard/invoices?query=qwerty).
De URL wordt bijgewerkt zonder dat de pagina wordt herladen, dankzij client-side navigatie van Next.js.
Na implementatie wordt alle tekst die in het invoerveld wordt getypt, weergegeven in de URL.
3. Houd de URL gesynchroniseerd met het invoerveld
Om ervoor te zorgen dat het invoerveld overeenkomt met de URL en wordt ingevuld wanneer deze wordt gedeeld, gebruik defaultValue door te lezen uit searchParams.
4. Werk de tabel bij om de zoekopdracht weer te geven
Tot slot werken we de Table-component bij om de zoekopdracht weer te geven. Pagina-componenten accepteren een prop genaamd searchParams. Geef de huidige URL-parameters door aan de <Table>-component.
Vergeet niet de Table-component te decommentariëren.
Geweldig! Je hebt met succes zoekfunctionaliteit aan je app toegevoegd. Probeer het uit – werkt het? 😊
In het volgende hoofdstuk behandelen we paginering, aangezien er momenteel slechts 6 facturen op de pagina zichtbaar zijn.
In de praktijk
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain how the useSearchParams hook works in more detail?
How does the Table component use the query and currentPage props to filter data?
What should I do if the search input and URL are not staying in sync?
Awesome!
Completion rate improved to 2.08
Het Ontwikkelen van de Zoekfunctionaliteit
Veeg om het menu te tonen
Theorie
Voordat de zoekfunctionaliteit wordt geïmplementeerd, is het essentieel om deze client hooks te begrijpen.
useSearchParams;- Biedt toegang tot de huidige URL-parameters;
- Voorbeeld: Voor de URL
/dashboard/invoices?page=1&query=pending, levert het{page: '1', query: 'pending'}.
usePathname;- Leest het huidige pad van de URL;
- Voorbeeld: Voor de route
domain/dashboard/invoices, geeftusePathname"/dashboard/invoices"terug.
useRouter.- Maakt navigeren tussen routes binnen clientcomponenten mogelijk en biedt meerdere methoden.
Overzicht van implementatiestappen:
- Gebruikersinvoer vastleggen;
- De URL bijwerken met zoekparameters;
- De URL gesynchroniseerd houden met het invoerveld;
- De tabel bijwerken om de zoekopdracht weer te geven.
Terug naar het project
1. Gebruikersinvoer vastleggen
- Open het
Search-component (app/ui/search.tsx); - Let op het gebruik van
'use client', wat aangeeft dat event listeners en hooks beschikbaar zijn; - Gebruik de functie
handleSearch, die wordt geactiveerd bij elke wijziging van de invoer.
Na implementatie, open de Developer Console in de browser. Alle tekst die in het invoerveld wordt getypt, moet zichtbaar zijn in de browserconsole.
2. Werk de URL bij met zoekparameters
- Importeer de
useSearchParamshook uit'next/navigation'en wijs deze toe aan een variabele; - Maak binnen de functie
handleSearcheen nieuwe instantie vanURLSearchParamsaan met behulp van de eerder gedefinieerde variabele (searchParams). Deze utility biedt methoden om URL-queryparameters te beheren; - Stel de parameterstring in op basis van de invoer van de gebruiker. Als de invoer leeg is, verwijder deze dan;
- Gebruik de hooks
useRouterenusePathnameuit'next/navigation'en pas dereplace-methode vanuseRouter()toe binnenhandleSearch.${pathname}vertegenwoordigt het huidige pad, bijvoorbeeld"/dashboard/invoices";- Terwijl de gebruiker typt in de zoekbalk, zet
params.toString()de invoer om naar een URL-vriendelijk formaat; replace(${pathname}?${params.toString()})werkt de URL bij met de zoekgegevens van de gebruiker (bijvoorbeeld/dashboard/invoices?query=qwerty).
De URL wordt bijgewerkt zonder dat de pagina wordt herladen, dankzij client-side navigatie van Next.js.
Na implementatie wordt alle tekst die in het invoerveld wordt getypt, weergegeven in de URL.
3. Houd de URL gesynchroniseerd met het invoerveld
Om ervoor te zorgen dat het invoerveld overeenkomt met de URL en wordt ingevuld wanneer deze wordt gedeeld, gebruik defaultValue door te lezen uit searchParams.
4. Werk de tabel bij om de zoekopdracht weer te geven
Tot slot werken we de Table-component bij om de zoekopdracht weer te geven. Pagina-componenten accepteren een prop genaamd searchParams. Geef de huidige URL-parameters door aan de <Table>-component.
Vergeet niet de Table-component te decommentariëren.
Geweldig! Je hebt met succes zoekfunctionaliteit aan je app toegevoegd. Probeer het uit – werkt het? 😊
In het volgende hoofdstuk behandelen we paginering, aangezien er momenteel slechts 6 facturen op de pagina zichtbaar zijn.
In de praktijk
Bedankt voor je feedback!