uso do UseEffect💫
Fala dev!
Esses dias estava assistindo um tutorial de ReactJs e o professor falou muito por cima que não era necessário usar useEffect, até fui atrás para saber mais, mas não fui muito eficiente em minhas pesquisas.
Então resolvi abrir esse forúm para ver se algum pode sanar minhas dúvidas:
- Qual é o propósito em usar?
- Por que usar?
- Tem alguma alternativa melhor? Se sim, por quê?
Agradeço a todos que puderem ajudar!
Matematicamente,
$Estado + efeitos = Interface$,
onde $Interface$ é React/JS/Angular/Bootstrap/qualquer outro framework
.
Desta forma, se o estado (useState
) não ta suprindo o que você precisa implementar, então use efeitos (useEffect
). É simples assim.
Bônus: da uma olhada no use
, um hook que pelo que já vi comentando (posso estar errado), pode substituir o useEffect: https://react.dev/reference/react/use
Tem um artigo na documentação que responde a sua pergunta: You Might Not Need an Effect.
Existem várias situações que as pessoas utilizam o useEffect
sem necessidade, mas às vezes é necessário. Por exemplo, como a própria documentação diz:
You do need Effects to synchronize with external systems.
Como a própria documentação diz, useEffect é uma ferramenta para sincronização com sistemas externos.
A frase "você não precisa usar useEffect" também vem da documentação, que tem o sentido de que se você está usando useEffect para qualquer outra coisa que não seja sincronização entre sistemas, provavelmente você não precisa dele e existe uma maneira mais eficiente de fazer essa "outra coisa".
Data fetching é sim OK de ser feito em useEffect, pois nada mais é que sincronização entre sistemas. Porém, como já comentaram, hoje existem libs que são mais eficientes e inteligentes para isso (como SWR)... Mas ainda assim, não é um pecado fazer data fetching em useEffect e inicialmente essa era a unica forma de realizar esse tipo de sincronização.
Não que eu tenha lá muito conhecimento sobre, mas acho que consigo responder a essas perguntas:
Qual é o propósito em usar?
Assim, quando voce carrega um componete, e quer que ele tenha alguma informação de alguma api , voce pode usar o UseEffect para quando o componente for renderizado ele busque essas informações e atualize o seu estado, assim exibindo a resposta da api que voce queria, isso é util em varias situações, como buscar dados de um usuário ou algum registro aleatório
Por que usar?
acho que isso entra dentro de resposta anterior, mas um motivo é porque é amplamente ultilizado e há varios exempos que voce pode seguir
Tem alguma alternativa melhor? Se sim, por quê? existem hooks como esse abaixo https://tanstack.com/query/latest eles tem alguns recursos a mais do que o UseEffect nomal