Sviluppo 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,usePathnamerestituisce"/dashboard/invoices".
useRouter.- Facilita la navigazione tra le rotte all'interno dei componenti client, offrendo diversi metodi.
Panoramica dei passaggi di implementazione:
- Acquisizione dell'input utente;
- Aggiornamento dell'URL con i parametri di ricerca;
- Sincronizzazione dell'URL con il campo di input;
- Aggiornamento della tabella per riflettere la query di ricerca.
Torna al progetto
1. Acquisizione dell'input utente
- Aprire il componente
Search(app/ui/search.tsx); - Osservare l'utilizzo di
'use client', che indica la disponibilità di listener di eventi e hook; - 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
- Importare l'hook
useSearchParamsda'next/navigation'e assegnarlo a una variabile; - All'interno della funzione
handleSearch, creare una nuova istanza diURLSearchParamsutilizzando la variabile precedentemente definita (searchParams). Questa utility fornisce metodi per manipolare i parametri di query dell'URL; - Impostare la stringa dei parametri in base all'input dell'utente. Se l'input è vuoto, eliminarlo;
- Utilizzare gli hook
useRoutereusePathnameda'next/navigation'e usare il metodoreplacediuseRouter()all'interno dihandleSearch.${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
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Sviluppo 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,usePathnamerestituisce"/dashboard/invoices".
useRouter.- Facilita la navigazione tra le rotte all'interno dei componenti client, offrendo diversi metodi.
Panoramica dei passaggi di implementazione:
- Acquisizione dell'input utente;
- Aggiornamento dell'URL con i parametri di ricerca;
- Sincronizzazione dell'URL con il campo di input;
- Aggiornamento della tabella per riflettere la query di ricerca.
Torna al progetto
1. Acquisizione dell'input utente
- Aprire il componente
Search(app/ui/search.tsx); - Osservare l'utilizzo di
'use client', che indica la disponibilità di listener di eventi e hook; - 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
- Importare l'hook
useSearchParamsda'next/navigation'e assegnarlo a una variabile; - All'interno della funzione
handleSearch, creare una nuova istanza diURLSearchParamsutilizzando la variabile precedentemente definita (searchParams). Questa utility fornisce metodi per manipolare i parametri di query dell'URL; - Impostare la stringa dei parametri in base all'input dell'utente. Se l'input è vuoto, eliminarlo;
- Utilizzare gli hook
useRoutereusePathnameda'next/navigation'e usare il metodoreplacediuseRouter()all'interno dihandleSearch.${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
Grazie per i tuoi commenti!