Integrering av UseSearchParams-kroken
I eksempelskomponenten ProductsPage integreres useSearchParams for å håndtere spørringsparametere.
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 gjennomgang av koden:
- Vi importerer nødvendige avhengigheter:
useState,useEffectoguseSearchParamsfra React Router; - Vi initialiserer tilstanden inne i komponenten ved å bruke
useState. Tilstandencompaniesinneholder dataene som skal vises, og vi bruker funksjonensetCompaniesfor å oppdatere den; - Vi oppretter en funksjon
updateCompaniesfor å filtrere dataene basert på spørringsparametere. Funksjonen tar de nåværende spørringsparameterne som enURLSearchParams-instans og bruker dem til å filtreredata. I dette tilfellet filtrerer den etter "name"-parameteren; - Vi bruker hooken
useEffectfor å kjøre funksjonenupdateCompaniesnår komponenten monteres og hver gang spørringsparameterne endres. Dette sikrer at de viste dataene holdes synkronisert med URL-en; - Funksjonen
handleChangeoppdaterer "name"-spørringsparameteren som respons på brukerinput. Når input-feltet endres, kaller densetSearchParamsmed den nye parameterverdien; - I komponentens return-setning gjengir vi et input-felt for brukerinput og en liste over selskaper basert på de filtrerte dataene.
Denne koden viser hvordan man kan integrere useSearchParams og React Router for å lage en dynamisk webapplikasjon som reagerer på endringer i spørringsparametere.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Integrering av UseSearchParams-kroken
Sveip for å vise menyen
I eksempelskomponenten ProductsPage integreres useSearchParams for å håndtere spørringsparametere.
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 gjennomgang av koden:
- Vi importerer nødvendige avhengigheter:
useState,useEffectoguseSearchParamsfra React Router; - Vi initialiserer tilstanden inne i komponenten ved å bruke
useState. Tilstandencompaniesinneholder dataene som skal vises, og vi bruker funksjonensetCompaniesfor å oppdatere den; - Vi oppretter en funksjon
updateCompaniesfor å filtrere dataene basert på spørringsparametere. Funksjonen tar de nåværende spørringsparameterne som enURLSearchParams-instans og bruker dem til å filtreredata. I dette tilfellet filtrerer den etter "name"-parameteren; - Vi bruker hooken
useEffectfor å kjøre funksjonenupdateCompaniesnår komponenten monteres og hver gang spørringsparameterne endres. Dette sikrer at de viste dataene holdes synkronisert med URL-en; - Funksjonen
handleChangeoppdaterer "name"-spørringsparameteren som respons på brukerinput. Når input-feltet endres, kaller densetSearchParamsmed den nye parameterverdien; - I komponentens return-setning gjengir vi et input-felt for brukerinput og en liste over selskaper basert på de filtrerte dataene.
Denne koden viser hvordan man kan integrere useSearchParams og React Router for å lage en dynamisk webapplikasjon som reagerer på endringer i spørringsparametere.
Takk for tilbakemeldingene dine!