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
Fantastico!
Completion tasso migliorato a 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!