Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utveckling av Sökfunktionalitet | Avancerade Next.js-Funktioner och Optimeringar
Next.js 14-Färdighet för att Bygga Moderna Webbappar

bookUtveckling av Sökfunktionalitet

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=pending returneras {page: '1', query: 'pending'}.
  • usePathname;
    • Läser av den aktuella URL:ens sökväg;
    • Exempel: För routen domain/dashboard/invoices returnerar usePathname "/dashboard/invoices".
  • useRouter.
    • Underlättar navigering mellan rutter i klientkomponenter och erbjuder flera metoder.

Översikt av implementeringssteg:

  1. Fånga användarens inmatning;
  2. Uppdatera URL:en med sökparametrar;
  3. Håll URL:en synkroniserad med inmatningsfältet;
  4. Uppdatera tabellen för att återspegla sökfrågan.

Tillbaka till projektet

1. Fånga användarens inmatning

  1. Öppna Search-komponenten (app/ui/search.tsx);
  2. Observera användningen av 'use client', vilket indikerar tillgänglighet för eventlyssnare och hooks;
  3. 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

  1. Importera hooken useSearchParams från 'next/navigation' och tilldela den till en variabel;
  2. Skapa inuti funktionen handleSearch en ny instans av URLSearchParams med hjälp av den tidigare definierade variabeln (searchParams). Detta verktyg tillhandahåller metoder för att hantera URL:ens frågeparametrar;
  3. Ange parametersträngen baserat på användarens inmatning. Om inmatningen är tom, ta bort den;
  4. Använd hookarna useRouter och usePathname från 'next/navigation' och använd metoden replace från useRouter() i handleSearch.
    • ${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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookUtveckling 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=pending returneras {page: '1', query: 'pending'}.
  • usePathname;
    • Läser av den aktuella URL:ens sökväg;
    • Exempel: För routen domain/dashboard/invoices returnerar usePathname "/dashboard/invoices".
  • useRouter.
    • Underlättar navigering mellan rutter i klientkomponenter och erbjuder flera metoder.

Översikt av implementeringssteg:

  1. Fånga användarens inmatning;
  2. Uppdatera URL:en med sökparametrar;
  3. Håll URL:en synkroniserad med inmatningsfältet;
  4. Uppdatera tabellen för att återspegla sökfrågan.

Tillbaka till projektet

1. Fånga användarens inmatning

  1. Öppna Search-komponenten (app/ui/search.tsx);
  2. Observera användningen av 'use client', vilket indikerar tillgänglighet för eventlyssnare och hooks;
  3. 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

  1. Importera hooken useSearchParams från 'next/navigation' och tilldela den till en variabel;
  2. Skapa inuti funktionen handleSearch en ny instans av URLSearchParams med hjälp av den tidigare definierade variabeln (searchParams). Detta verktyg tillhandahåller metoder för att hantera URL:ens frågeparametrar;
  3. Ange parametersträngen baserat på användarens inmatning. Om inmatningen är tom, ta bort den;
  4. Använd hookarna useRouter och usePathname från 'next/navigation' och använd metoden replace från useRouter() i handleSearch.
    • ${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

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 6. Kapitel 2
some-alt