Intégration du Hook useSearchParams
Dans le composant d'exemple ProductsPage, nous intégrons useSearchParams pour gérer les paramètres de requête.
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>
</>
);
};
Voici une explication du code :
- Importation des dépendances nécessaires :
useState,useEffectetuseSearchParamsdepuis React Router ; - Initialisation de l’état dans le composant à l’aide de
useState. L’étatcompaniescontient les données à afficher, et la fonctionsetCompaniespermet de les mettre à jour ; - Création d’une fonction
updateCompaniespour filtrer les données en fonction des paramètres de requête. Cette fonction prend les paramètres de requête actuels sous forme d’instanceURLSearchParamset les utilise pour filtrer lesdata. Dans ce cas, le filtrage s’effectue selon le paramètre "name" ; - Utilisation du hook
useEffectpour exécuter la fonctionupdateCompanieslors du montage du composant et à chaque modification des paramètres de requête. Cela garantit que les données affichées restent synchronisées avec l’URL ; - La fonction
handleChangemet à jour le paramètre de requête "name" en réponse à la saisie de l’utilisateur. Lorsque le champ de saisie change, elle appellesetSearchParamsavec la nouvelle valeur du paramètre ; - Dans l’instruction de retour du composant, affichage d’un champ de saisie pour l’utilisateur et d’une liste d’entreprises basée sur les données filtrées.
Ce code illustre l’intégration de useSearchParams et React Router pour créer une application web dynamique réagissant aux modifications des paramètres de requête.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how `useSearchParams` works in this example?
What happens if the user clears the input field?
How can I add more filters using query parameters?
Awesome!
Completion rate improved to 4.17
Intégration du Hook useSearchParams
Glissez pour afficher le menu
Dans le composant d'exemple ProductsPage, nous intégrons useSearchParams pour gérer les paramètres de requête.
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>
</>
);
};
Voici une explication du code :
- Importation des dépendances nécessaires :
useState,useEffectetuseSearchParamsdepuis React Router ; - Initialisation de l’état dans le composant à l’aide de
useState. L’étatcompaniescontient les données à afficher, et la fonctionsetCompaniespermet de les mettre à jour ; - Création d’une fonction
updateCompaniespour filtrer les données en fonction des paramètres de requête. Cette fonction prend les paramètres de requête actuels sous forme d’instanceURLSearchParamset les utilise pour filtrer lesdata. Dans ce cas, le filtrage s’effectue selon le paramètre "name" ; - Utilisation du hook
useEffectpour exécuter la fonctionupdateCompanieslors du montage du composant et à chaque modification des paramètres de requête. Cela garantit que les données affichées restent synchronisées avec l’URL ; - La fonction
handleChangemet à jour le paramètre de requête "name" en réponse à la saisie de l’utilisateur. Lorsque le champ de saisie change, elle appellesetSearchParamsavec la nouvelle valeur du paramètre ; - Dans l’instruction de retour du composant, affichage d’un champ de saisie pour l’utilisateur et d’une liste d’entreprises basée sur les données filtrées.
Ce code illustre l’intégration de useSearchParams et React Router pour créer une application web dynamique réagissant aux modifications des paramètres de requête.
Merci pour vos commentaires !