Integratie van de UseSearchParams-Hook
In het voorbeeldcomponent ProductsPage wordt useSearchParams geïntegreerd om queryparameters te beheren.
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 volgt een overzicht van de code:
- We importeren de benodigde afhankelijkheden:
useState,useEffectenuseSearchParamsvan React Router; - We initialiseren de state binnen de component met
useState. Decompanies-state bevat de gegevens die getoond worden, en we gebruiken de functiesetCompaniesom deze bij te werken; - We maken een functie
updateCompaniesom de gegevens te filteren op basis van queryparameters. De functie ontvangt de huidige queryparameters als eenURLSearchParams-instantie en gebruikt deze om dedatate filteren. In dit geval wordt er gefilterd op de parameter "name"; - We gebruiken de
useEffect-hook om de functieupdateCompaniesuit te voeren wanneer de component wordt geladen en telkens wanneer de queryparameters wijzigen. Dit zorgt ervoor dat de weergegeven gegevens synchroon blijven met de URL; - De functie
handleChangewerkt de queryparameter "name" bij als reactie op gebruikersinvoer. Wanneer het invoerveld verandert, roept dezesetSearchParamsaan met de nieuwe parameterwaarde; - In de return statement van de component renderen we een invoerveld voor gebruikersinvoer en een lijst van bedrijven op basis van de gefilterde gegevens.
Deze code toont hoe useSearchParams en React Router geïntegreerd kunnen worden om een dynamische webapplicatie te maken die reageert op wijzigingen in queryparameters.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Integratie van de UseSearchParams-Hook
Veeg om het menu te tonen
In het voorbeeldcomponent ProductsPage wordt useSearchParams geïntegreerd om queryparameters te beheren.
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 volgt een overzicht van de code:
- We importeren de benodigde afhankelijkheden:
useState,useEffectenuseSearchParamsvan React Router; - We initialiseren de state binnen de component met
useState. Decompanies-state bevat de gegevens die getoond worden, en we gebruiken de functiesetCompaniesom deze bij te werken; - We maken een functie
updateCompaniesom de gegevens te filteren op basis van queryparameters. De functie ontvangt de huidige queryparameters als eenURLSearchParams-instantie en gebruikt deze om dedatate filteren. In dit geval wordt er gefilterd op de parameter "name"; - We gebruiken de
useEffect-hook om de functieupdateCompaniesuit te voeren wanneer de component wordt geladen en telkens wanneer de queryparameters wijzigen. Dit zorgt ervoor dat de weergegeven gegevens synchroon blijven met de URL; - De functie
handleChangewerkt de queryparameter "name" bij als reactie op gebruikersinvoer. Wanneer het invoerveld verandert, roept dezesetSearchParamsaan met de nieuwe parameterwaarde; - In de return statement van de component renderen we een invoerveld voor gebruikersinvoer en een lijst van bedrijven op basis van de gefilterde gegevens.
Deze code toont hoe useSearchParams en React Router geïntegreerd kunnen worden om een dynamische webapplicatie te maken die reageert op wijzigingen in queryparameters.
Bedankt voor je feedback!