Integration af UseSearchParams-Hooken
I eksemplet med komponenten ProductsPage integreres useSearchParams til håndtering af forespørgselsparametre.
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>
</>
);
};
Her er en gennemgang af koden:
- Vi importerer de nødvendige afhængigheder:
useState,useEffectoguseSearchParamsfra React Router; - Vi initialiserer tilstanden inde i komponenten ved hjælp af
useState. Tilstandencompaniesindeholder de data, der skal vises, og vi bruger funktionensetCompaniestil at opdatere den; - Vi opretter en funktion
updateCompaniestil at filtrere dataene baseret på forespørgselsparametre. Funktionen tager de aktuelle forespørgselsparametre som enURLSearchParams-instans og bruger dem til at filtreredata. I dette tilfælde filtreres der efter "name"-parameteren; - Vi bruger hooken
useEffecttil at køre funktionenupdateCompanies, når komponenten monteres, og hver gang forespørgselsparametrene ændres. Dette sikrer, at de viste data holdes synkroniseret med URL'en; - Funktionen
handleChangeopdaterer "name"-forespørgselsparameteren som reaktion på brugerinput. Når inputfeltet ændres, kaldessetSearchParamsmed den nye parameterværdi; - I komponentens return-udsagn gengiver vi et inputfelt til brugerinput og en liste over virksomheder baseret på de filtrerede data.
Denne kode demonstrerer, hvordan man integrerer useSearchParams og React Router for at skabe en dynamisk webapplikation, der reagerer på ændringer i forespørgselsparametre.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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 af UseSearchParams-Hooken
Stryg for at vise menuen
I eksemplet med komponenten ProductsPage integreres useSearchParams til håndtering af forespørgselsparametre.
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>
</>
);
};
Her er en gennemgang af koden:
- Vi importerer de nødvendige afhængigheder:
useState,useEffectoguseSearchParamsfra React Router; - Vi initialiserer tilstanden inde i komponenten ved hjælp af
useState. Tilstandencompaniesindeholder de data, der skal vises, og vi bruger funktionensetCompaniestil at opdatere den; - Vi opretter en funktion
updateCompaniestil at filtrere dataene baseret på forespørgselsparametre. Funktionen tager de aktuelle forespørgselsparametre som enURLSearchParams-instans og bruger dem til at filtreredata. I dette tilfælde filtreres der efter "name"-parameteren; - Vi bruger hooken
useEffecttil at køre funktionenupdateCompanies, når komponenten monteres, og hver gang forespørgselsparametrene ændres. Dette sikrer, at de viste data holdes synkroniseret med URL'en; - Funktionen
handleChangeopdaterer "name"-forespørgselsparameteren som reaktion på brugerinput. Når inputfeltet ændres, kaldessetSearchParamsmed den nye parameterværdi; - I komponentens return-udsagn gengiver vi et inputfelt til brugerinput og en liste over virksomheder baseret på de filtrerede data.
Denne kode demonstrerer, hvordan man integrerer useSearchParams og React Router for at skabe en dynamisk webapplikation, der reagerer på ændringer i forespørgselsparametre.
Tak for dine kommentarer!