Como usar useTransition no React para evitar isLoading
Esqueça o velho setIsLoading(true). Descubra como o hook useTransition pode simplificar a sua lógica de carregamento em aplicações React modernas.
Por que isso é importante
Controlar a experiência do usuário durante chamadas assíncronas é essencial para aplicações modernas. O uso do hook useTransition permite reagir a updates concorrentes com muito mais clareza e simplicidade, eliminando a necessidade de set-ters repetitivos e estado manual.
O clássico método com isLoading
Se você já desenvolveu interfaces com React, é muito provável que tenha criado uma variável de estado do tipo isLoading
para controlar o momento entre o início da requisição e a chegada da resposta. O padrão é: definir o loading como true, mostrar um spinner, aguardar a resposta e então trocar para false.
Embora funcione, esse padrão exige mais código, reduz clareza e está sujeito a erros se esquecermos de resetar o estado corretamente.
⚠️Atenção
Depender exclusivamente de estados manuais para controlar carregamentos pode causar inconsistências difíceis de depurar, além de tornar o código mais verboso.
O que é o hook useTransition?
useTransition
é um hook do React que permite diferenciar atualizações de alta prioridade (interações diretas) de atualizações mais lentas (como carregamentos de dados). Ele retorna dois elementos:
ℹ️Info técnica
useTransition
melhora a fluidez de interfaces ao manter o estado visual anterior até que a nova interface esteja pronta para ser exibida.
Como aplicar na prática
Com o startTransition
, podemos envolver qualquer função assíncrona e monitorar o estado de carregamento através de isPending
. Isso elimina a necessidade de gerenciar setIsLoading
manualmente.
startTransition
para encapsular sua requisição assíncrona.isPending
para condicionar o seu spinner ou mensagem de loading.✅Dica útil
Ao usar isPending
você garante que o status loading será sempre coerente com a operação em andamento, evitando race conditions.
Comparando as abordagens
Estado manual com isLoading
Controle tradicional com useState e vários setIsLoading.
Prós
- Solução conhecida
- Controle total sobre lógica
Contras
- Código boilerplate
- Erro comum ao esquecer de trocar loading
useTransition
Hook moderno do React para atualizações concorrentes
Prós
- Menos código
- Redução de bugs
- Código mais legível
Contras
- Pode exigir adaptação inicial
- Necessita entender concorrência no React
Dicas extras de ferramentas
TanStack Query
Gerenciamento assíncrono com controle de loading embutido