Integrazione dell'Hook useSearchParams
Nell'esempio del componente ProductsPage, viene integrato useSearchParams per gestire i parametri di query.
import React, { useState, useEffect } from "react";
import { useSearchParams } from "react-router-dom";
const ProductsPage = ({ data }) => {
const [companies, setCompanies] = useState(data);
const [searchParams, setSearchParams] = useSearchParams();
// Function to update the displayed `companies` based on query parameters
const updateCompanies = (params) => {
const filteredCompanies = data.filter((item) => {
const { companyName } = item;
if (params.get("name")) {
return companyName.toLowerCase().includes(params.get("name"));
}
return true;
});
setCompanies(filteredCompanies);
};
useEffect(() => {
// When the component mounts or query parameters change, update the displayed `companies`
updateCompanies(searchParams);
}, [searchParams, data]);
// Function to update query parameters based on user input
const handleChange = (e) => {
const newName = e.target.value;
setSearchParams({ name: newName });
};
return (
<>
<input
type="text"
value={searchParams.get("name") || ""}
onChange={handleChange}
/>
<ul className="companyList">
{companies.map(({ id, companyName, companyDescription }) => (
<li key={id}>
<h2>{companyName}</h2>
<p>{companyDescription}</p>
</li>
))}
</ul>
</>
);
};
Ecco una panoramica del codice:
- Importazione delle dipendenze necessarie:
useState,useEffecteuseSearchParamsda React Router; - Inizializzazione dello stato all'interno del componente tramite
useState. Lo statocompaniescontiene i dati da visualizzare e la funzionesetCompaniesviene utilizzata per aggiornarli; - Creazione della funzione
updateCompaniesper filtrare i dati in base ai parametri di query. La funzione riceve i parametri di query correnti come istanza diURLSearchParamse li utilizza per filtrare idata. In questo caso, il filtro avviene tramite il parametro "name"; - Utilizzo dell'hook
useEffectper eseguire la funzioneupdateCompaniesal montaggio del componente e ogni volta che i parametri di query cambiano. Questo garantisce che i dati visualizzati siano sempre sincronizzati con l'URL; - La funzione
handleChangeaggiorna il parametro di query "name" in risposta all'input dell'utente. Quando il campo di input cambia, viene chiamatasetSearchParamscon il nuovo valore del parametro; - Nella dichiarazione di ritorno del componente, viene renderizzato un campo di input per l'inserimento dell'utente e un elenco di aziende basato sui dati filtrati.
Questo codice dimostra come integrare useSearchParams e React Router per creare un'applicazione web dinamica che risponde ai cambiamenti dei parametri di query.
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
Awesome!
Completion rate improved to 4.17
Integrazione dell'Hook useSearchParams
Scorri per mostrare il menu
Nell'esempio del componente ProductsPage, viene integrato useSearchParams per gestire i parametri di query.
import React, { useState, useEffect } from "react";
import { useSearchParams } from "react-router-dom";
const ProductsPage = ({ data }) => {
const [companies, setCompanies] = useState(data);
const [searchParams, setSearchParams] = useSearchParams();
// Function to update the displayed `companies` based on query parameters
const updateCompanies = (params) => {
const filteredCompanies = data.filter((item) => {
const { companyName } = item;
if (params.get("name")) {
return companyName.toLowerCase().includes(params.get("name"));
}
return true;
});
setCompanies(filteredCompanies);
};
useEffect(() => {
// When the component mounts or query parameters change, update the displayed `companies`
updateCompanies(searchParams);
}, [searchParams, data]);
// Function to update query parameters based on user input
const handleChange = (e) => {
const newName = e.target.value;
setSearchParams({ name: newName });
};
return (
<>
<input
type="text"
value={searchParams.get("name") || ""}
onChange={handleChange}
/>
<ul className="companyList">
{companies.map(({ id, companyName, companyDescription }) => (
<li key={id}>
<h2>{companyName}</h2>
<p>{companyDescription}</p>
</li>
))}
</ul>
</>
);
};
Ecco una panoramica del codice:
- Importazione delle dipendenze necessarie:
useState,useEffecteuseSearchParamsda React Router; - Inizializzazione dello stato all'interno del componente tramite
useState. Lo statocompaniescontiene i dati da visualizzare e la funzionesetCompaniesviene utilizzata per aggiornarli; - Creazione della funzione
updateCompaniesper filtrare i dati in base ai parametri di query. La funzione riceve i parametri di query correnti come istanza diURLSearchParamse li utilizza per filtrare idata. In questo caso, il filtro avviene tramite il parametro "name"; - Utilizzo dell'hook
useEffectper eseguire la funzioneupdateCompaniesal montaggio del componente e ogni volta che i parametri di query cambiano. Questo garantisce che i dati visualizzati siano sempre sincronizzati con l'URL; - La funzione
handleChangeaggiorna il parametro di query "name" in risposta all'input dell'utente. Quando il campo di input cambia, viene chiamatasetSearchParamscon il nuovo valore del parametro; - Nella dichiarazione di ritorno del componente, viene renderizzato un campo di input per l'inserimento dell'utente e un elenco di aziende basato sui dati filtrati.
Questo codice dimostra come integrare useSearchParams e React Router per creare un'applicazione web dinamica che risponde ai cambiamenti dei parametri di query.
Grazie per i tuoi commenti!