1
resposta

[Sugestão] Async e useEffect

Eu recebi uns warnings do expo quando implementei os useEffects assincronos e resolvi que não ia deixa-los no meu projeto rs.

Pesquisando pela documentação do React e alguns sites, encontrei uma recomendação a respeito e vou deixar uma sugestão de como eu fiz no meu código:

O useEffect espera que a função passada para ele retorne uma função de limpeza ou null, mas uma função async não retorna uma dessas coisas. Isso pode causar problemas na hora de lidar com os efeitos colaterais.

Se você chama uma função async dentro do useEffect, ela será executada imediatamente e não será cancelada quando o componente deixar de ser exibido, o que pode causar problemas de desempenho.

Se você chama uma função async dentro do useEffect sem passar um array vazio como segundo argumento, essa função será chamada sempre que o componente for atualizado, o que pode causar problemas de desempenho e resultar em chamadas desnecessárias à API.

Uma maneira mais correta de lidar com seria colocar a lógica de busca de dados em uma função separada e chamá-la dentro do useEffect. E você deve passar o array de dependencias corretamente, para evitar chamadas desnecessárias:

    useEffect(() => {
        async function pegarRepos(){
            const resultados = await pegarRepositorioDoUsuarios(route.params.id);
            setRepo(resultados);
        }
        pegarRepos();
    }, [estaNaTela]);
1 resposta

Oi Rodrigo! Como você está?

Queria dizer parabéns por ter enfrentado e superado o seu desafio, e também por ter compartilhado e explicado muito bem a sua solução para ajudar outros que estejam passando pela mesma situação. Tenho certeza de que isso será muito útil! Continua a desenvolver seus conhecimentos dessa maneira e se precisar, é só nos avisar. Além disso, agradecemos a sugestão que irá nos ajudar a melhorar nosso conteúdo.

Abraço e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software