Como ficar assíncrono com useEffect

Execute tarefas assíncronas com useEffect de forma limpa e segura

De chamar uma API para definir um atraso de tempo limite, tenho certeza que você já questionou como fazer isso corretamente ao usar o gancho React useEffect. Se isso ainda soa confuso, então este artigo é para você. Se não, você pode pelo menos aprender uma abordagem diferente para fazer o trabalho ou se sentir mais confiante ao fazê-lo.

Vou apresentar 3 formas de o fazer de forma segura e arrumada. Mas primeiro, quero mostrar o que você NÃO deve fazer.

O que você NÃO deve fazer ❌

Não faça a tarefa assíncrona diretamente no useEffect, em vez disso, SEMPRE envolva sua tarefa assíncrona em uma função e chame-a apenas do useEffect.

Aqui está um exemplo do que você NÃO deve fazer:

useEffect(async () => {
   await getData();
},[]);

Além disso, fazer o que este exemplo BAD mostrou levaria a um erro React:

Os retornos de chamada de efeito são síncronos para evitar condições de corrida.

Tudo bem, agora estamos seguros para passar para as boas práticas ⬇️

1. Definindo a função assíncrona dentro do gancho

Se você pretende executar uma tarefa assíncrona, para obter alguns dados de uma API por exemplo, e atualizar o estado de carregamento do seu componente, você precisa definir a função dentro do gancho e depois chamá-la:

useEffect(() => {
async function getData() {
    setLoading(false);
    const reponse = await myApi.getSomeGoodData()
    setLoading(true);
   }
getData();
},[]);

2. Definindo a função assíncrona fora do gancho

Se você planeja reutilizar a função assíncrona definida, uma boa ideia é defini-la no corpo do componente funcional, encapsulado pelo useCallbackgancho. Confira:

const getData = useCallback(() => {
    setLoading(false);
    const reponse = await myApi.getSomeGoodData()
    setLoading(true);
}, [])
useEffect(() => {
getData()
},[getData])

3. Definir um intervalo ou tempo limite

Os 2 exemplos anteriores foram focados principalmente em buscar dados e atualizar o estado do componente. Este é para mostrar também um cenário comum para tarefas assíncronas dentro de useEffect que está definindo um intervalo ou um tempo limite.

O truque para isso é SEMPRE limpar o tempo limite e o intervalo definido no arquivo useEffect.

Definir um tempo limite

useEffect(() => {
const timeout = setTimeout(() => {
     // do something
   }, 100)
return () => {
      clearTimeout(timeout);
   }
},[])

useEffect(() => {
const interval = setInterval(() => {
       // do something
  }, 100)
return () => {
      clearInterval(interval);
  }
},[])

Os exemplos acima cobrirão 99,99% das situações assíncronas que você pode encontrar durante o desenvolvimento do React. Apenas lembre-se de estar atento às dependências do efeito. Se você não encontrou o seu caso nos exemplos abaixo, deixe um comentário e eu analisarei.

Obrigado por ler

—- Fernando Abolafio

Suggested posts

Encontrar informações sobre nomes de domínio

Um trecho de Small, Sharp Software Tools por Brian P. Hogan

Encontrar informações sobre nomes de domínio

Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.

Dicas para fazer a transição para a segurança cibernética sem conhecimento técnico.

Dicas para fazer a transição para a segurança cibernética sem conhecimento técnico.

Em 2022, fiz a transição de uma função não técnica para a segurança cibernética. Eu tive meu primeiro diploma em língua alemã, sei que você está chocado e curioso sobre como consegui fazer a transição com sucesso. Bem, simplesmente aconteceu.

Related posts

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.

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

Mudar para uma nova carreira pode ser extremamente desafiador se você tentar fazer isso sozinho. É importante encontrar parceiros de responsabilidade que estejam no mesmo nível de aprendizado que você, que compartilhem objetivos, tenacidade e motivação semelhantes.

Dois anos em design - O bom, o mau e o feio…

Dois anos em design - O bom, o mau e o feio…

“Ei, Siri, toque Me Dive, de Olivia Dean.” Era maio de 2021 quando comecei meu estágio na Future Academy Africa em Akure, Nigéria.

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.