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 détaillée du code :
- Importation des dépendances nécessaires :
useState
,useEffect
etuseSearchParams
depuis React Router ; - Initialisation de l’état à l’intérieur du composant avec
useState
. L’étatcompanies
contient les données à afficher, et la fonctionsetCompanies
permet de les mettre à jour ; - Création d’une fonction
updateCompanies
pour filtrer les données selon les paramètres de requête. Cette fonction prend les paramètres de requête actuels sous forme d’instanceURLSearchParams
et les utilise pour filtrer lesdata
. Dans cet exemple, le filtrage s’effectue sur le paramètre "name" ; - Utilisation du hook
useEffect
pour exécuter la fonctionupdateCompanies
lors du montage du composant et à chaque modification des paramètres de requête. Cela garantit la synchronisation des données affichées avec l’URL ; - La fonction
handleChange
met à jour le paramètre de requête "name" en réponse à la saisie utilisateur. Lorsque le champ de saisie change, elle appellesetSearchParams
avec la nouvelle valeur du paramètre ; - Dans le bloc 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
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 détaillée du code :
- Importation des dépendances nécessaires :
useState
,useEffect
etuseSearchParams
depuis React Router ; - Initialisation de l’état à l’intérieur du composant avec
useState
. L’étatcompanies
contient les données à afficher, et la fonctionsetCompanies
permet de les mettre à jour ; - Création d’une fonction
updateCompanies
pour filtrer les données selon les paramètres de requête. Cette fonction prend les paramètres de requête actuels sous forme d’instanceURLSearchParams
et les utilise pour filtrer lesdata
. Dans cet exemple, le filtrage s’effectue sur le paramètre "name" ; - Utilisation du hook
useEffect
pour exécuter la fonctionupdateCompanies
lors du montage du composant et à chaque modification des paramètres de requête. Cela garantit la synchronisation des données affichées avec l’URL ; - La fonction
handleChange
met à jour le paramètre de requête "name" en réponse à la saisie utilisateur. Lorsque le champ de saisie change, elle appellesetSearchParams
avec la nouvelle valeur du paramètre ; - Dans le bloc 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 !