Integration des UseSearchParams-Hooks
Im Beispielkomponenten ProductsPage wird useSearchParams integriert, um Abfrageparameter zu verwalten.
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>
</>
);
};
Hier ist eine Übersicht des Codes:
- Import der erforderlichen Abhängigkeiten:
useState,useEffectunduseSearchParamsvon React Router; - Initialisierung des Zustands innerhalb der Komponente mit
useState. Der Zustandcompaniesenthält die anzuzeigenden Daten und wird mit der FunktionsetCompaniesaktualisiert; - Erstellung einer Funktion
updateCompanies, um die Daten basierend auf den Query-Parametern zu filtern. Die Funktion erhält die aktuellen Query-Parameter als Instanz vonURLSearchParamsund verwendet diese, um diedatazu filtern. In diesem Fall erfolgt die Filterung nach dem Parameter "name"; - Verwendung des
useEffect-Hooks, um die FunktionupdateCompaniesbeim Mounten der Komponente und bei jeder Änderung der Query-Parameter auszuführen. Dadurch wird sichergestellt, dass die angezeigten Daten mit der URL synchron bleiben; - Die Funktion
handleChangeaktualisiert den Query-Parameter "name" als Reaktion auf Benutzereingaben. Bei einer Änderung des Eingabefelds wirdsetSearchParamsmit dem neuen Parameterwert aufgerufen; - Im Rückgabewert der Komponente wird ein Eingabefeld für Benutzereingaben sowie eine Liste der Unternehmen basierend auf den gefilterten Daten gerendert.
Dieser Code zeigt, wie useSearchParams und React Router integriert werden können, um eine dynamische Webanwendung zu erstellen, die auf Änderungen der Query-Parameter reagiert.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Integration des UseSearchParams-Hooks
Swipe um das Menü anzuzeigen
Im Beispielkomponenten ProductsPage wird useSearchParams integriert, um Abfrageparameter zu verwalten.
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>
</>
);
};
Hier ist eine Übersicht des Codes:
- Import der erforderlichen Abhängigkeiten:
useState,useEffectunduseSearchParamsvon React Router; - Initialisierung des Zustands innerhalb der Komponente mit
useState. Der Zustandcompaniesenthält die anzuzeigenden Daten und wird mit der FunktionsetCompaniesaktualisiert; - Erstellung einer Funktion
updateCompanies, um die Daten basierend auf den Query-Parametern zu filtern. Die Funktion erhält die aktuellen Query-Parameter als Instanz vonURLSearchParamsund verwendet diese, um diedatazu filtern. In diesem Fall erfolgt die Filterung nach dem Parameter "name"; - Verwendung des
useEffect-Hooks, um die FunktionupdateCompaniesbeim Mounten der Komponente und bei jeder Änderung der Query-Parameter auszuführen. Dadurch wird sichergestellt, dass die angezeigten Daten mit der URL synchron bleiben; - Die Funktion
handleChangeaktualisiert den Query-Parameter "name" als Reaktion auf Benutzereingaben. Bei einer Änderung des Eingabefelds wirdsetSearchParamsmit dem neuen Parameterwert aufgerufen; - Im Rückgabewert der Komponente wird ein Eingabefeld für Benutzereingaben sowie eine Liste der Unternehmen basierend auf den gefilterten Daten gerendert.
Dieser Code zeigt, wie useSearchParams und React Router integriert werden können, um eine dynamische Webanwendung zu erstellen, die auf Änderungen der Query-Parameter reagiert.
Danke für Ihr Feedback!