Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Integrazione dell'Hook useSearchParams | Funzionalità Avanzate di React Router
Fondamenti di React Router

bookIntegrazione dell'Hook useSearchParams

Nell'esempio del componente ProductsPage, viene integrato useSearchParams per gestire i parametri di query.

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>
    </>
  );
};

Ecco una panoramica del codice:

  1. Importazione delle dipendenze necessarie: useState, useEffect e useSearchParams da React Router;
  2. Inizializzazione dello stato all'interno del componente tramite useState. Lo stato companies contiene i dati da visualizzare e la funzione setCompanies viene utilizzata per aggiornarli;
  3. Creazione della funzione updateCompanies per filtrare i dati in base ai parametri di query. La funzione riceve i parametri di query correnti come istanza di URLSearchParams e li utilizza per filtrare i data. In questo caso, il filtro avviene tramite il parametro "name";
  4. Utilizzo dell'hook useEffect per eseguire la funzione updateCompanies al montaggio del componente e ogni volta che i parametri di query cambiano. Questo garantisce che i dati visualizzati siano sempre sincronizzati con l'URL;
  5. La funzione handleChange aggiorna il parametro di query "name" in risposta all'input dell'utente. Quando il campo di input cambia, viene chiamata setSearchParams con il nuovo valore del parametro;
  6. Nella dichiarazione di ritorno del componente, viene renderizzato un campo di input per l'inserimento dell'utente e un elenco di aziende basato sui dati filtrati.

Questo codice dimostra come integrare useSearchParams e React Router per creare un'applicazione web dinamica che risponde ai cambiamenti dei parametri di query.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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?

bookIntegrazione dell'Hook useSearchParams

Scorri per mostrare il menu

Nell'esempio del componente ProductsPage, viene integrato useSearchParams per gestire i parametri di query.

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>
    </>
  );
};

Ecco una panoramica del codice:

  1. Importazione delle dipendenze necessarie: useState, useEffect e useSearchParams da React Router;
  2. Inizializzazione dello stato all'interno del componente tramite useState. Lo stato companies contiene i dati da visualizzare e la funzione setCompanies viene utilizzata per aggiornarli;
  3. Creazione della funzione updateCompanies per filtrare i dati in base ai parametri di query. La funzione riceve i parametri di query correnti come istanza di URLSearchParams e li utilizza per filtrare i data. In questo caso, il filtro avviene tramite il parametro "name";
  4. Utilizzo dell'hook useEffect per eseguire la funzione updateCompanies al montaggio del componente e ogni volta che i parametri di query cambiano. Questo garantisce che i dati visualizzati siano sempre sincronizzati con l'URL;
  5. La funzione handleChange aggiorna il parametro di query "name" in risposta all'input dell'utente. Quando il campo di input cambia, viene chiamata setSearchParams con il nuovo valore del parametro;
  6. Nella dichiarazione di ritorno del componente, viene renderizzato un campo di input per l'inserimento dell'utente e un elenco di aziende basato sui dati filtrati.

Questo codice dimostra come integrare useSearchParams e React Router per creare un'applicazione web dinamica che risponde ai cambiamenti dei parametri di query.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 6
some-alt