Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Outra forma de fazer

Nos minutos finais, é passado um parametro para verificar se está na tela ou não. Isso não poderia ser resolvido se passe a variável repo como dependência do useEffect?

const [repo, setRepo] = useState([]);

    async function pegaRespositorios() {
        const response = await repositoriosUsuario(route.params.id);
        setRepo(response);
    }

    useEffect(() => {
        pegaRespositorios();
    }, [repo]);
1 resposta
solução!

Fala, Moisés! Tudo certo ?

Bem interessante essa sugestão, é muito bom você já pensar em formas de solucionar problemas assim, o estudo se torna muito mais efetivo quando fazemos dessa forma. Mas, tem um pequeno detalhe nessa solução que você sugeriu, que vai fazer com que ela não esteja totalmente correta para a situação.

Como o repo não vai ser atualizado quando for efetuada alguma mudança nos repositórios, logo não vai ter como acionar o useEffect que vai fazer a requisição para termos os novos repositórios, em resumo, dessa forma meio que a variável que o useEffect está esperando, é a mesma que ele precisa atualizar.

O useEffect ele tem um comportamento bem importante nessas horas, ele executa uma vez quando a página é carregada, mas como utilizamos o goBack para voltar para a página de Repositórios que já estava na pilha, acontece que o useEffect já foi executado, e os elementos já foram todos carregados na tela,logo, ele não irá executar de novo. Por esse motivo o useIsFocused é tão indicado para essa situação, porque ele vai observar essas mudanças de telas e notificar isso.

Eu espero que tenha ajudado e qualquer coisa eu estou por aqui.

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