Usando o useEffect do React como um profissional

Olá, pessoal, neste passo a passo mostrarei tudo o que você precisa saber para usar a função useEffect do React como um profissional.

Uma breve história

Antes de haver useEffect , havia métodos de ciclo de vida, a saber:

  1. componentDidMount
  2. componentDidUpdate
  3. componentWillUnmount

componentDidUpdate(prevProps, prevState) {
  if (prevProps.foo !== this.props.foo) {/* do something */} 
  if (prevState.bar !== this.state.bar)  {/* do something else */}
}

Com esses métodos de ciclo de vida, podemos lidar de forma confiável com qualquer mudança no estado do componente, então por que mudar para useEffect ?

Insira os componentes sem estado do React

Em um ponto (acredito que já em 2016), a equipe React tomou a decisão de criar componentes React que podem ser instanciados apenas com uma função Javascript regular e tradicional. Então:

import React from "react";
function MyFunc() {
  return <div>Hey!</div>
}

Insira React.useEffect

A nova abordagem para gerenciar mudanças de estado veio na forma de uma função useEffect exposta pela biblioteca React. Então, como podemos recriar nossos amados métodos componentDidMount , componentDidUpdate e componentWillUnmount ? Vamos expandir nossa função sem estado anterior:

import React from "react";
function MyFunc(props) {
const [bar setBar] = React.useState(null);
  
  React.useEffect(() => {
    console.log("componentDidMount");
    return () => {
      console.log("componentDidUnmount")
    }
  }, []);
  
  React.useEffect(() => {
    console.log("componentDidUpdate when 'bar' changes");
  }, [bar]);
React.useEffect(() => {
    console.log("componentDidUpdate when 'props.foo' changes");
  }, [props.foo]);
return <div>Hey!</div>
}

Outra coisa que adicionamos a este exemplo, React.useState, um gancho de estado, está fora do escopo deste tutorial, mas aprenda mais sobre isso aqui !

Indo além do gerenciamento do ciclo de vida

É ótimo podermos gerenciar o estado de um componente, bem como com os métodos de ciclo de vida anteriores. Entre a simplicidade e a reutilização de funções sem estado e a função React.useEffect, um novo paradigma se tornou disponível para nós: funções com estado reutilizáveis ​​ou, mais comumente chamado: ganchos personalizados .

Um leitor experiente como você provavelmente notou que, com useEffect, não podemos acessar as propriedades prevProps ou prevState como podíamos antes. Não tema! Leia a solução para isso aqui . O motivo pelo qual essa solução funciona é porque React.useRef não dispara novas renderizações do componente. Além disso, useEffect sem dependências dispara toda vez que houver uma nova renderização do componente, independentemente de qual mudança de estado o disparou.

Hello Custom Hooks

Não há melhor exemplo de base para um gancho personalizado do que aquele que o React compartilha em sua documentação oficial aqui . Vamos começar na parte inferior do exemplo e mover nosso caminho para cima:

function FriendListItem(props) {
  const isOnline = useFriendStatus(props.friend.id);
  return (
    <li style={{ color: isOnline ? 'green' : 'black' }}>
      {props.friend.name}
    </li>
  );
}

import React, { useState, useEffect } from 'react';

function useFriendStatus(friendID) {
  const [isOnline, setIsOnline] = useState(null);

  function handleStatusChange(status) {
    setIsOnline(status.isOnline);
  }

  useEffect(() => {
    ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
    return () => {
      ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
    };
  });

  return isOnline;
}

Conclusão

Neste tutorial, revisamos:

  1. Como gerenciamos o ciclo de vida de um componente antes de useEffect e por que essa abordagem se tornou obsoleta
  2. Como podemos usar useEffect para gerenciar com eficácia o ciclo de vida de um componente
  3. Como podemos aproveitar a capacidade de reutilização das funções sem estado do React e usarEffect para criar funções com estado reutilizáveis.

Suggested posts

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Introdução O AVC é uma emergência médica que pode atingir qualquer pessoa a qualquer momento. Ocorre quando o fluxo sanguíneo para uma parte do cérebro é interrompido, levando a uma perda repentina da função cerebral.

A revolução sem código: liberando a prosperidade dos negócios com Webflow, Framer, Bubble.io,

A revolução sem código: liberando a prosperidade dos negócios com Webflow, Framer, Bubble.io,

Embarque em uma emocionante jornada de inovação e sucesso enquanto explora o potencial inexplorado dessas surpreendentes plataformas sem código. Deixe-me compartilhar uma história com você sobre Sapna, uma notável empresária.

Related posts

Criando um ambiente de trabalho seguro

Criando um ambiente de trabalho seguro

“Ele vai me proteger quando eu estiver em perigo. Ele me esconderá em sua tenda.

A performance solo da garota ruiva

A pedido de Hayden, Katie se filma se masturbando.

A performance solo da garota ruiva

Passava da meia-noite quando Hayden levou Katie de volta ao dormitório da faculdade depois da noite juntos. Ela tinha aula cedo de manhã e não tinha outra troca de roupa depois de ter ficado com ele na noite anterior.

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.