Integrering av UseSearchParams-Hooken
I exemplet med komponenten ProductsPage integreras useSearchParams för att hantera frågeparametrar.
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>
</>
);
};
Här är en genomgång av koden:
- Nödvändiga beroenden importeras:
useState,useEffectochuseSearchParamsfrån React Router; - Tillståndet initieras i komponenten med hjälp av
useState. Tillståndetcompaniesinnehåller data som ska visas, och funktionensetCompaniesanvänds för att uppdatera det; - En funktion
updateCompaniesskapas för att filtrera data baserat på frågeparametrar. Funktionen tar de aktuella frågeparametrarna som en instans avURLSearchParamsoch använder dem för att filtreradata. I detta fall filtreras det efter parametern "name"; - Hooken
useEffectanvänds för att köra funktionenupdateCompaniesnär komponenten monteras och varje gång frågeparametrarna ändras. Detta säkerställer att visad data hålls synkroniserad med URL:en; - Funktionen
handleChangeuppdaterar frågeparametern "name" som svar på användarens inmatning. När inmatningsfältet ändras anropassetSearchParamsmed det nya parametervärdet; - I komponentens return-sats renderas ett inmatningsfält för användarens inmatning och en lista över företag baserat på den filtrerade datan.
Denna kod visar hur useSearchParams och React Router kan integreras för att skapa en dynamisk webbapplikation som reagerar på förändringar i frågeparametrar.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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-Hooken
Svep för att visa menyn
I exemplet med komponenten ProductsPage integreras useSearchParams för att hantera frågeparametrar.
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>
</>
);
};
Här är en genomgång av koden:
- Nödvändiga beroenden importeras:
useState,useEffectochuseSearchParamsfrån React Router; - Tillståndet initieras i komponenten med hjälp av
useState. Tillståndetcompaniesinnehåller data som ska visas, och funktionensetCompaniesanvänds för att uppdatera det; - En funktion
updateCompaniesskapas för att filtrera data baserat på frågeparametrar. Funktionen tar de aktuella frågeparametrarna som en instans avURLSearchParamsoch använder dem för att filtreradata. I detta fall filtreras det efter parametern "name"; - Hooken
useEffectanvänds för att köra funktionenupdateCompaniesnär komponenten monteras och varje gång frågeparametrarna ändras. Detta säkerställer att visad data hålls synkroniserad med URL:en; - Funktionen
handleChangeuppdaterar frågeparametern "name" som svar på användarens inmatning. När inmatningsfältet ändras anropassetSearchParamsmed det nya parametervärdet; - I komponentens return-sats renderas ett inmatningsfält för användarens inmatning och en lista över företag baserat på den filtrerade datan.
Denna kod visar hur useSearchParams och React Router kan integreras för att skapa en dynamisk webbapplikation som reagerar på förändringar i frågeparametrar.
Tack för dina kommentarer!