Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Integrando o Hook useSearchParams | Recursos Avançados do React Router
Essenciais do React Router

bookIntegrando o Hook useSearchParams

No componente de exemplo ProductsPage, o hook useSearchParams é integrado para gerenciar os parâmetros de consulta.

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

Aqui está uma análise do código:

  1. Importação das dependências necessárias: useState, useEffect e useSearchParams do React Router;
  2. Inicialização do estado dentro do componente utilizando useState. O estado companies armazena os dados a serem exibidos, e a função setCompanies é utilizada para atualizá-lo;
  3. Criação da função updateCompanies para filtrar os dados com base nos parâmetros de consulta. A função recebe os parâmetros de consulta atuais como uma instância de URLSearchParams e os utiliza para filtrar o data. Neste caso, o filtro é feito pelo parâmetro "name";
  4. Utilização do hook useEffect para executar a função updateCompanies quando o componente é montado e sempre que os parâmetros de consulta mudam. Isso garante que os dados exibidos estejam sincronizados com a URL;
  5. A função handleChange atualiza o parâmetro de consulta "name" em resposta à entrada do usuário. Quando o campo de entrada é alterado, ela chama setSearchParams com o novo valor do parâmetro;
  6. Na declaração de retorno do componente, é renderizado um campo de entrada para o usuário e uma lista de empresas baseada nos dados filtrados.

Este código demonstra como integrar useSearchParams e React Router para criar uma aplicação web dinâmica que responde a alterações nos parâmetros de consulta.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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

bookIntegrando o Hook useSearchParams

Deslize para mostrar o menu

No componente de exemplo ProductsPage, o hook useSearchParams é integrado para gerenciar os parâmetros de consulta.

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

Aqui está uma análise do código:

  1. Importação das dependências necessárias: useState, useEffect e useSearchParams do React Router;
  2. Inicialização do estado dentro do componente utilizando useState. O estado companies armazena os dados a serem exibidos, e a função setCompanies é utilizada para atualizá-lo;
  3. Criação da função updateCompanies para filtrar os dados com base nos parâmetros de consulta. A função recebe os parâmetros de consulta atuais como uma instância de URLSearchParams e os utiliza para filtrar o data. Neste caso, o filtro é feito pelo parâmetro "name";
  4. Utilização do hook useEffect para executar a função updateCompanies quando o componente é montado e sempre que os parâmetros de consulta mudam. Isso garante que os dados exibidos estejam sincronizados com a URL;
  5. A função handleChange atualiza o parâmetro de consulta "name" em resposta à entrada do usuário. Quando o campo de entrada é alterado, ela chama setSearchParams com o novo valor do parâmetro;
  6. Na declaração de retorno do componente, é renderizado um campo de entrada para o usuário e uma lista de empresas baseada nos dados filtrados.

Este código demonstra como integrar useSearchParams e React Router para criar uma aplicação web dinâmica que responde a alterações nos parâmetros de consulta.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 6
some-alt