Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele UseSearchParams-koukun Integrointi | React Routerin Kehittyneet Ominaisuudet
React Routerin Perusteet

bookUseSearchParams-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:

  1. Tarvittavien riippuvuuksien tuonti: useState, useEffect ja useSearchParams React Routerista;
  2. Tilamuuttujan alustaminen komponentissa käyttäen useState. companies-tila sisältää näytettävät tiedot, ja setCompanies-funktiolla päivitetään tätä tilaa;
  3. updateCompanies-funktion luominen tietojen suodattamiseksi kyselyparametrien perusteella. Funktio ottaa nykyiset kyselyparametrit URLSearchParams-instanssina ja käyttää niitä data-taulukon suodattamiseen. Tässä tapauksessa suodatus tehdään "name"-parametrin perusteella;
  4. 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;
  5. handleChange-funktion käyttö "name"-kyselyparametrin päivittämiseen käyttäjän syötteen perusteella. Kun syötekenttä muuttuu, funktio kutsuu setSearchParams-funktiota uudella parametrin arvolla;
  6. 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.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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

bookUseSearchParams-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:

  1. Tarvittavien riippuvuuksien tuonti: useState, useEffect ja useSearchParams React Routerista;
  2. Tilamuuttujan alustaminen komponentissa käyttäen useState. companies-tila sisältää näytettävät tiedot, ja setCompanies-funktiolla päivitetään tätä tilaa;
  3. updateCompanies-funktion luominen tietojen suodattamiseksi kyselyparametrien perusteella. Funktio ottaa nykyiset kyselyparametrit URLSearchParams-instanssina ja käyttää niitä data-taulukon suodattamiseen. Tässä tapauksessa suodatus tehdään "name"-parametrin perusteella;
  4. 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;
  5. handleChange-funktion käyttö "name"-kyselyparametrin päivittämiseen käyttäjän syötteen perusteella. Kun syötekenttä muuttuu, funktio kutsuu setSearchParams-funktiota uudella parametrin arvolla;
  6. 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.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 6
some-alt