UseSearchParams-koukun Integrointi
Esimerkkikomponentissa ProductsPage integroidaan useSearchParams-hook kyselyparametrien hallintaan.
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>
</>
);
};
Tässä on koodin erittely:
- Tarvittavien riippuvuuksien tuonti:
useState,useEffectjauseSearchParamsReact Routerista; - Tilamuuttujan alustaminen komponentissa käyttäen
useState.companies-tila sisältää näytettävät tiedot, jasetCompanies-funktiolla päivitetään tätä tilaa; updateCompanies-funktion luominen tietojen suodattamiseksi kyselyparametrien perusteella. Funktio ottaa nykyiset kyselyparametritURLSearchParams-instanssina ja käyttää niitädata-taulukon suodattamiseen. Tässä tapauksessa suodatus tehdään "name"-parametrin perusteella;useEffect-hookin käyttöupdateCompanies-funktion suorittamiseen, kun komponentti alustetaan ja aina, kun kyselyparametrit muuttuvat. Tämä varmistaa, että näytettävät tiedot pysyvät synkronoituna URL-osoitteen kanssa;handleChange-funktion käyttö "name"-kyselyparametrin päivittämiseen käyttäjän syötteen perusteella. Kun syötekenttä muuttuu, funktio kutsuusetSearchParams-funktiota uudella parametrin arvolla;- Paluuarvossa renderöidään syötekenttä käyttäjän syötteelle sekä lista yrityksistä suodatettujen tietojen perusteella.
Tämä koodi havainnollistaa, kuinka useSearchParams ja React Router voidaan integroida dynaamisen verkkosovelluksen luomiseksi, joka reagoi kyselyparametrien muutoksiin.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
UseSearchParams-koukun Integrointi
Pyyhkäise näyttääksesi valikon
Esimerkkikomponentissa ProductsPage integroidaan useSearchParams-hook kyselyparametrien hallintaan.
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>
</>
);
};
Tässä on koodin erittely:
- Tarvittavien riippuvuuksien tuonti:
useState,useEffectjauseSearchParamsReact Routerista; - Tilamuuttujan alustaminen komponentissa käyttäen
useState.companies-tila sisältää näytettävät tiedot, jasetCompanies-funktiolla päivitetään tätä tilaa; updateCompanies-funktion luominen tietojen suodattamiseksi kyselyparametrien perusteella. Funktio ottaa nykyiset kyselyparametritURLSearchParams-instanssina ja käyttää niitädata-taulukon suodattamiseen. Tässä tapauksessa suodatus tehdään "name"-parametrin perusteella;useEffect-hookin käyttöupdateCompanies-funktion suorittamiseen, kun komponentti alustetaan ja aina, kun kyselyparametrit muuttuvat. Tämä varmistaa, että näytettävät tiedot pysyvät synkronoituna URL-osoitteen kanssa;handleChange-funktion käyttö "name"-kyselyparametrin päivittämiseen käyttäjän syötteen perusteella. Kun syötekenttä muuttuu, funktio kutsuusetSearchParams-funktiota uudella parametrin arvolla;- Paluuarvossa renderöidään syötekenttä käyttäjän syötteelle sekä lista yrityksistä suodatettujen tietojen perusteella.
Tämä koodi havainnollistaa, kuinka useSearchParams ja React Router voidaan integroida dynaamisen verkkosovelluksen luomiseksi, joka reagoi kyselyparametrien muutoksiin.
Kiitos palautteestasi!