"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Ganchos personalizados no React: casos de uso e significado

Ganchos personalizados no React: casos de uso e significado

Publicado em 01/08/2024
Navegar:148

Custom Hooks in React: Use Cases and Significance

Ganchos personalizados no React são uma excelente maneira de encapsular lógica reutilizável, gerenciar estado e lidar com efeitos colaterais de uma forma que mantém seu código limpo e fácil de manter. Aqui estão alguns casos de uso importantes e a importância de criar ganchos personalizados:

1. Reutilizando lógica entre componentes

Exemplo: busca de dados de uma API.
Você pode criar um gancho personalizado como useFetch para encapsular a lógica de busca de dados e lidar com estados de carregamento, sucesso e erro. Essa lógica pode então ser reutilizada em vários componentes.

import { useState, useEffect } from 'react';

const useFetch = (url) => {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    fetch(url)
      .then((response) => response.json())
      .then((data) => {
        setData(data);
        setLoading(false);
      })
      .catch((error) => {
        setError(error);
        setLoading(false);
      });
  }, [url]);

  return { data, loading, error };
};

export default useFetch;

2. Gerenciando Lógica de Estado Complexo

Exemplo: gerenciamento do estado do formulário
Ganchos personalizados podem ser usados ​​para gerenciar o estado do formulário e a lógica de validação de forma reutilizável.

import { useState } from 'react';

const useForm = (initialState) => {
  const [values, setValues] = useState(initialState);

  const handleChange = (event) => {
    const { name, value } = event.target;
    setValues({
      ...values,
      [name]: value,
    });
  };

  const resetForm = () => {
    setValues(initialState);
  };

  return [values, handleChange, resetForm];
};

export default useForm;

3. Abstraindo efeitos colaterais

Exemplo: sincronizando com armazenamento local.
Você pode criar um gancho personalizado para gerenciar o estado que sincroniza com o armazenamento local.

import { useState, useEffect } from 'react';

const useLocalStorage = (key, initialValue) => {
  const [value, setValue] = useState(() => {
    const storedValue = localStorage.getItem(key);
    return storedValue ? JSON.parse(storedValue) : initialValue;
  });

  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue];
};

export default useLocalStorage;


Significado dos ganchos personalizados

1. Reutilização de código
Ganchos personalizados permitem reutilizar a lógica em vários componentes sem duplicar o código, promovendo o princípio DRY (Don't Repeat Yourself).

2. Separação de preocupações
Ao mover a lógica dos componentes para os ganchos, você pode manter o código do componente mais limpo e mais focado na renderização, enquanto o gancho personalizado cuida da lógica.

3. Testabilidade
Ganchos personalizados podem ser testados independentemente dos componentes que os utilizam, facilitando a gravação de testes de unidade para lógica complexa.

3. Consistência
O uso de ganchos personalizados garante um comportamento consistente em diferentes partes do seu aplicativo, pois a mesma lógica é usada sempre que o gancho é invocado.

Conclusão
Ganchos personalizados no React são uma ferramenta poderosa para criar código reutilizável, sustentável e testável. Eles ajudam você a encapsular lógica complexa, gerenciar efeitos colaterais e de estado com eficiência e promover práticas recomendadas, como separação de interesses e reutilização de código. Ao aproveitar ganchos personalizados, você pode manter seus componentes limpos e focados em seu objetivo principal: renderizar a IU.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/hargun_singh/custom-hooks-in-react-use-cases-and-significance-4931?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3