"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 > Mergulhe profundamente nos ganchos React

Mergulhe profundamente nos ganchos React

Publicado em 2024-08-28
Navegar:609

React Hooks são um recurso poderoso introduzido no React 16.8 que permite usar estado e outros recursos do React sem escrever uma classe. Eles permitem organizar a lógica dentro de um componente, tornando seu código mais limpo e reutilizável. Vamos nos aprofundar em alguns dos React Hooks mais comumente usados:

1. useEstado

  • O gancho useState no React permite adicionar um estado aos componentes funcionais. Ele retorna um array com dois elementos: o valor do estado atual e uma função para atualizar esse estado.

Uso básico:

Deep Dive into React Hooks

  • state: o valor atual do estado.

  • setState: uma função para atualizar o estado.

Pontos-chave:

  • Estado inicial: o estado inicial pode ser qualquer tipo de dados, como um número, string, objeto ou matriz.

  • Atualizando o estado: você pode atualizar o estado passando um novo valor para setState ou usando uma função que usa o estado anterior como argumento.

  • Rerenderizações: a atualização do estado aciona uma nova renderização do componente.

  • Inicialização lenta: para um estado inicial complexo, você pode passar uma função para useState para calcular o valor inicial apenas na primeira renderização.

Exemplo:

Deep Dive into React Hooks

Neste exemplo, useState é usado para gerenciar um estado de contagem, que é atualizado quando o botão é clicado.

2. useEfeito

  • O gancho useEffect no React permite que você execute efeitos colaterais em seus componentes funcionais. Os efeitos colaterais podem incluir busca de dados, manipulação manual de DOM ou assinatura de serviços.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • O primeiro argumento é uma função que contém o código do efeito colateral.

  • A função de retorno opcional é usada para limpeza, como cancelar a assinatura de um serviço para evitar vazamentos de memória.

  • O segundo argumento é uma matriz de dependências. O efeito é executado somente quando uma das dependências é alterada.

Matriz de dependências:

  • Se o array de dependência estiver vazio ([]), o efeito será executado apenas uma vez após a renderização inicial.

  • Se omitido, o efeito é executado após cada renderização.

Casos de uso comuns:

  • Buscando dados de uma API quando o componente é montado.

  • Inscrição em eventos (por exemplo, WebSocket, redimensionamento de janela) e limpeza quando o componente é desmontado.

  • Atualizando o título do documento ou interagindo com o DOM.

Exemplo:

Deep Dive into React Hooks

Compreender useEffect é crucial para gerenciar efeitos colaterais e garantir que seus componentes se comportem conforme o esperado nas renderizações.

3. useContexto

  • O gancho useContext no React permite acessar e consumir valores de contexto em seus componentes funcionais. O contexto fornece uma maneira de compartilhar valores (como um estado global) entre componentes sem ter que passar acessórios manualmente em todos os níveis.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • Primeiro você cria um contexto usando React.createContext(), que retorna um objeto de contexto.

  • Este objeto de contexto vem com dois componentes: Provedor e Consumidor.

  • O componente Provider fornece o valor do contexto, que pode ser acessado por qualquer componente aninhado que use o gancho useContext.

Exemplo:

Deep Dive into React Hooks

Quando usar:

  • Use useContext quando precisar passar dados profundamente por uma árvore de componentes sem perfuração de suporte.

  • É particularmente útil para temas, autenticação de usuário, configurações de idioma ou qualquer gerenciamento de estado global.

Nota importante:

  • useContext acionará uma nova renderização sempre que o valor do contexto mudar, portanto, use-o criteriosamente para evitar renderizações desnecessárias em sua árvore de componentes.

useContext simplifica o consumo de valores de contexto, facilitando o gerenciamento do estado global em seu aplicativo.

4. useRedutor

  • O gancho useReducer no React é usado para gerenciar lógica de estado mais complexa em componentes funcionais. Ele fornece uma alternativa para useState e é particularmente útil quando as mudanças de estado dependem de valores de estado anteriores ou envolvem vários subvalores.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • reducer: Uma função que determina como o estado deve mudar com base na ação recebida. Ele pega o estado atual e uma ação e retorna o novo estado.

  • initialState: o valor inicial do estado.

Exemplo:

Deep Dive into React Hooks

Quando usar:

  • Use useReducer quando você tiver uma lógica de estado complexa que envolve vários subvalores ou quando as atualizações de estado dependerem de valores de estado anteriores.

  • Também é útil quando você precisa lidar com várias ações que podem afetar o estado de diferentes maneiras.

useReducer ajuda a gerenciar o estado de uma maneira mais previsível e sustentável, especialmente em cenários com interações de estado complexas ou quando a lógica do estado precisa ser encapsulada em uma única função.

5. useMemo

  • O gancho useMemo no React é usado para otimizar o desempenho memorizando os resultados de cálculos caros, garantindo que eles sejam recalculados apenas quando suas dependências mudarem. Isso ajuda a evitar recálculos desnecessários em cada renderização.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • useMemo usa uma função que calcula um valor e uma matriz de dependência.

  • A função só é reavaliada quando uma das dependências muda.

  • Ele retorna o resultado memorizado do cálculo.

Exemplo:

Deep Dive into React Hooks

Quando usar:

  • Use useMemo quando tiver cálculos caros que não precisam ser recalculados em cada renderização.

  • É particularmente útil para otimizar o desempenho em componentes com cálculos pesados ​​ou grandes transformações de dados.

Nota importante:

  • useMemo não garante que o valor não será recalculado; apenas garante que seja recalculado somente quando as dependências mudarem.

  • O uso excessivo de useMemo ou seu uso para cálculos triviais pode adicionar complexidade desnecessária sem ganhos significativos de desempenho.

useMemo é uma ferramenta poderosa para otimização de desempenho, mas deve ser usada criteriosamente para encontrar um equilíbrio entre desempenho e complexidade.

6. useCallback

  • O gancho useCallback no React é usado para memorizar funções de retorno de chamada, evitando que sejam recriadas em cada renderização, a menos que suas dependências mudem. Isso pode ajudar a otimizar o desempenho, evitando novas renderizações desnecessárias de componentes filhos que dependem desses retornos de chamada.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • useCallback usa uma função e uma matriz de dependência.

  • A função é memorizada e só será recriada se uma das dependências for alterada.

  • Ele retorna a versão memorizada da função de retorno de chamada.

Exemplo:

Deep Dive into React Hooks

Quando usar:

  • Use useCallback para memorizar funções de retorno de chamada que são passadas como acessórios para componentes filhos para evitar novas renderizações desnecessárias.

  • É útil quando um componente filho depende da igualdade de referência para evitar renderizações desnecessárias ou para evitar a recriação de funções dentro de componentes que acionam operações caras.

Nota importante:

  • useCallback ajuda a manter referências de funções estáveis ​​entre renderizações, o que pode melhorar o desempenho em componentes que dependem dessas funções.

7. useRef

  • O gancho useRef no React é usado para persistir valores mutáveis ​​entre renderizações sem causar novas renderizações. Ele pode ser usado para acessar e interagir diretamente com elementos DOM ou para armazenar valores mutáveis ​​​​que não acionam novas renderizações quando atualizados.

Sintaxe básica:

Deep Dive into React Hooks

Como funciona:

  • useRef retorna um objeto mutável com uma propriedade atual.

  • initialValue é atribuído ao atual na primeira renderização.

  • Você pode atualizar o atual sem causar uma nova renderização.

Exemplo:

Deep Dive into React Hooks

Casos de uso comuns:

  • Acessando elementos DOM: para interagir diretamente com nós DOM, como focar uma entrada ou medir o tamanho de um elemento.

  • Valores persistentes: para manter os valores que precisam ser retidos nas renderizações sem acionar uma nova renderização, como manter o controle de valores de estado anteriores ou temporizadores.

Nota importante:

  • Atualizações para o atual não acionam uma nova renderização do componente.

  • useRef é útil para casos em que você precisa gerenciar ou interagir com valores ou elementos DOM sem afetar a lógica de renderização do componente.

useRef fornece uma maneira de manter referências mutáveis ​​​​que persistem entre renderizações, tornando-o uma ferramenta versátil para gerenciar interações DOM e valores não relacionados à renderização.

Conclusão

React Hooks simplifica o gerenciamento de estado, tratamento de efeitos colaterais e outras lógicas em componentes funcionais. Eles promovem a reutilização de código e uma melhor organização, permitindo extrair lógica em ganchos reutilizáveis. Compreender esses ganchos e seu uso adequado pode aprimorar significativamente suas habilidades de desenvolvimento do React.

Por favor, compartilhe sua opinião sobre isso. Boa codificação!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/khushboo-tolat/deep-dive-into-react-hooks-47k5?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
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