Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Integrering av UseSearchParams-kroken | Avanserte Funksjoner i React Router
React Router Essentials

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

  1. Vi importerer nødvendige avhengigheter: useState, useEffect og useSearchParams fra React Router;
  2. Vi initialiserer tilstanden inne i komponenten ved å bruke useState. Tilstanden companies inneholder dataene som skal vises, og vi bruker funksjonen setCompanies for å oppdatere den;
  3. Vi oppretter en funksjon updateCompanies for å filtrere dataene basert på spørringsparametere. Funksjonen tar de nåværende spørringsparameterne som en URLSearchParams-instans og bruker dem til å filtrere data. I dette tilfellet filtrerer den etter "name"-parameteren;
  4. Vi bruker hooken useEffect for å kjøre funksjonen updateCompanies når komponenten monteres og hver gang spørringsparameterne endres. Dette sikrer at de viste dataene holdes synkronisert med URL-en;
  5. Funksjonen handleChange oppdaterer "name"-spørringsparameteren som respons på brukerinput. Når input-feltet endres, kaller den setSearchParams med den nye parameterverdien;
  6. 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.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 4.17

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

  1. Vi importerer nødvendige avhengigheter: useState, useEffect og useSearchParams fra React Router;
  2. Vi initialiserer tilstanden inne i komponenten ved å bruke useState. Tilstanden companies inneholder dataene som skal vises, og vi bruker funksjonen setCompanies for å oppdatere den;
  3. Vi oppretter en funksjon updateCompanies for å filtrere dataene basert på spørringsparametere. Funksjonen tar de nåværende spørringsparameterne som en URLSearchParams-instans og bruker dem til å filtrere data. I dette tilfellet filtrerer den etter "name"-parameteren;
  4. Vi bruker hooken useEffect for å kjøre funksjonen updateCompanies når komponenten monteres og hver gang spørringsparameterne endres. Dette sikrer at de viste dataene holdes synkronisert med URL-en;
  5. Funksjonen handleChange oppdaterer "name"-spørringsparameteren som respons på brukerinput. Når input-feltet endres, kaller den setSearchParams med den nye parameterverdien;
  6. 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.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6
some-alt