Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sviluppo della Funzionalità di Ricerca | Funzionalità Avanzate di Next.js e Ottimizzazioni
Padronanza di Next.js 14 per la Creazione di Applicazioni Web Moderne

bookSviluppo della Funzionalità di Ricerca

Teoria

Prima di implementare la funzionalità di ricerca, è fondamentale comprendere questi hook client.

  • useSearchParams;
    • Consente l'accesso ai parametri attuali dell'URL;
    • Esempio: Per l'URL /dashboard/invoices?page=1&query=pending, restituisce {page: '1', query: 'pending'}.
  • usePathname;
    • Legge il pathname attuale dell'URL;
    • Esempio: Per la rotta domain/dashboard/invoices, usePathname restituisce "/dashboard/invoices".
  • useRouter.
    • Facilita la navigazione tra le rotte all'interno dei componenti client, offrendo diversi metodi.

Panoramica dei passaggi di implementazione:

  1. Acquisizione dell'input utente;
  2. Aggiornamento dell'URL con i parametri di ricerca;
  3. Sincronizzazione dell'URL con il campo di input;
  4. Aggiornamento della tabella per riflettere la query di ricerca.

Torna al progetto

1. Acquisizione dell'input utente

  1. Aprire il componente Search (app/ui/search.tsx);
  2. Osservare l'utilizzo di 'use client', che indica la disponibilità di listener di eventi e hook;
  3. Utilizzare la funzione handleSearch, che si attiva a ogni modifica dell'input.

Dopo l'implementazione, aprire la Console Sviluppatore nel browser. Qualsiasi testo inserito nel campo di input dovrebbe essere visualizzato nella console del browser.

2. Aggiornare l'URL con i parametri di ricerca

  1. Importare l'hook useSearchParams da 'next/navigation' e assegnarlo a una variabile;
  2. All'interno della funzione handleSearch, creare una nuova istanza di URLSearchParams utilizzando la variabile precedentemente definita (searchParams). Questa utility fornisce metodi per manipolare i parametri di query dell'URL;
  3. Impostare la stringa dei parametri in base all'input dell'utente. Se l'input è vuoto, eliminarlo;
  4. Utilizzare gli hook useRouter e usePathname da 'next/navigation' e usare il metodo replace di useRouter() all'interno di handleSearch.
    • ${pathname} rappresenta il percorso corrente, ad esempio "/dashboard/invoices";
    • Mentre l'utente digita nella barra di ricerca, params.toString() converte l'input in un formato compatibile con l'URL;
    • replace(${pathname}?${params.toString()}) aggiorna l'URL con i dati di ricerca dell'utente (ad esempio, /dashboard/invoices?query=qwerty).

L'URL viene aggiornato senza ricaricare la pagina, grazie alla navigazione client-side di Next.js.

Dopo l'implementazione, qualsiasi testo inserito nell'input sarà riflesso nell'URL.

3. Mantenere l'URL sincronizzato con il campo di input

Per garantire che il campo di input corrisponda all'URL e venga compilato quando condiviso, utilizzare defaultValue leggendo da searchParams.

4. Aggiornare la tabella per riflettere la query di ricerca

Infine, aggiorniamo il componente Table per riflettere la query di ricerca. I componenti di pagina accettano una prop chiamata searchParams. Passare i parametri URL correnti al componente <Table>.

Non dimenticare di decommentare il componente Table.

Ottimo! Hai aggiunto con successo la funzionalità di ricerca alla tua applicazione. Provala: funziona? 😊

Nel prossimo capitolo, approfondiremo la paginazione poiché attualmente sono visibili solo 6 fatture nella pagina.

In pratica

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookSviluppo della Funzionalità di Ricerca

Scorri per mostrare il menu

Teoria

Prima di implementare la funzionalità di ricerca, è fondamentale comprendere questi hook client.

  • useSearchParams;
    • Consente l'accesso ai parametri attuali dell'URL;
    • Esempio: Per l'URL /dashboard/invoices?page=1&query=pending, restituisce {page: '1', query: 'pending'}.
  • usePathname;
    • Legge il pathname attuale dell'URL;
    • Esempio: Per la rotta domain/dashboard/invoices, usePathname restituisce "/dashboard/invoices".
  • useRouter.
    • Facilita la navigazione tra le rotte all'interno dei componenti client, offrendo diversi metodi.

Panoramica dei passaggi di implementazione:

  1. Acquisizione dell'input utente;
  2. Aggiornamento dell'URL con i parametri di ricerca;
  3. Sincronizzazione dell'URL con il campo di input;
  4. Aggiornamento della tabella per riflettere la query di ricerca.

Torna al progetto

1. Acquisizione dell'input utente

  1. Aprire il componente Search (app/ui/search.tsx);
  2. Osservare l'utilizzo di 'use client', che indica la disponibilità di listener di eventi e hook;
  3. Utilizzare la funzione handleSearch, che si attiva a ogni modifica dell'input.

Dopo l'implementazione, aprire la Console Sviluppatore nel browser. Qualsiasi testo inserito nel campo di input dovrebbe essere visualizzato nella console del browser.

2. Aggiornare l'URL con i parametri di ricerca

  1. Importare l'hook useSearchParams da 'next/navigation' e assegnarlo a una variabile;
  2. All'interno della funzione handleSearch, creare una nuova istanza di URLSearchParams utilizzando la variabile precedentemente definita (searchParams). Questa utility fornisce metodi per manipolare i parametri di query dell'URL;
  3. Impostare la stringa dei parametri in base all'input dell'utente. Se l'input è vuoto, eliminarlo;
  4. Utilizzare gli hook useRouter e usePathname da 'next/navigation' e usare il metodo replace di useRouter() all'interno di handleSearch.
    • ${pathname} rappresenta il percorso corrente, ad esempio "/dashboard/invoices";
    • Mentre l'utente digita nella barra di ricerca, params.toString() converte l'input in un formato compatibile con l'URL;
    • replace(${pathname}?${params.toString()}) aggiorna l'URL con i dati di ricerca dell'utente (ad esempio, /dashboard/invoices?query=qwerty).

L'URL viene aggiornato senza ricaricare la pagina, grazie alla navigazione client-side di Next.js.

Dopo l'implementazione, qualsiasi testo inserito nell'input sarà riflesso nell'URL.

3. Mantenere l'URL sincronizzato con il campo di input

Per garantire che il campo di input corrisponda all'URL e venga compilato quando condiviso, utilizzare defaultValue leggendo da searchParams.

4. Aggiornare la tabella per riflettere la query di ricerca

Infine, aggiorniamo il componente Table per riflettere la query di ricerca. I componenti di pagina accettano una prop chiamata searchParams. Passare i parametri URL correnti al componente <Table>.

Non dimenticare di decommentare il componente Table.

Ottimo! Hai aggiunto con successo la funzionalità di ricerca alla tua applicazione. Provala: funziona? 😊

Nel prossimo capitolo, approfondiremo la paginazione poiché attualmente sono visibili solo 6 fatture nella pagina.

In pratica

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 6. Capitolo 2
some-alt