React.lazy React.lazy: Divisão de Código

Última atualização: 2026-11-03

React.lazy React.lazy: Divisão de Código

React.lazy(() => import('./Page')) transforma um componente em um chunk baixado apenas quando realmente necessário, e Suspense mostra uma UI reserva enquanto o chunk está em trânsito. A primeira pintura então envia apenas o código da página inicial e todas as outras rotas são buscadas sob demanda, que é a primeira grande vitória para a velocidade de uma single-page app e a mais fácil de medir.

GrupoRoteamento e Gerenciamento
TipoAPI
DesdeReact 16.6

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

import { lazy, Suspense } from 'react'

const AdminPage = lazy(() => import('./AdminPage'))  // dynamic import splits the bundle

<Suspense fallback={<p>Loading…</p>}>
  <AdminPage />   {/* the chunk is requested at render time and replaces the fallback once ready */}
</Suspense>

⚙️ Parâmetros

factoryA função fábrica () => import('./X'): ela retorna a promessa do módulo, e o módulo precisa de uma exportação default (desde o React 18 você pode usar then para nomear explicitamente uma exportação nomeada).

Retorna:lazy(factory) retorna um novo componente: o módulo começa a carregar na primeira renderização e, até resolver, lança para o limite Suspense mais próximo para que ele possa mostrar seu fallback.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

Clicar no botão mostra um espaço reservado "baixando" por 1,2 segundo e então troca para o conteúdo carregado — a transição do fallback para o componente lazy do Suspense (demonstração simulada).

💡 Pontos-chave

⚠️ Aviso O módulo de um componente lazy precisa ter uma exportação default (ou ser envolvido em then); caso contrário, a renderização lança erro; associe-o a um ErrorBoundary para capturar falhas de carregamento.
💡 Dica O carregamento lento é mais frequentemente associado ao roteamento: envolva cada Route de página em um par lazy + Suspense e o JS da primeira pintura frequentemente reduz pela metade.
ℹ️ Informação Em desenvolvimento local, o chunk carrega instantaneamente e você não vê diferença; faça build com vite build && vite preview para sentir a latência real da divisão.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Qual a relação entre lazy e Suspense?
R lazy declara "este componente é carregado sob demanda", Suspense captura o estado "ainda não pronto" e renderiza o fallback. Os dois sempre vêm em par.
P O fallback aparece por um instante e fica feio
R Transforme o fallback em uma tela de esqueleto para que a transição fique menos brusca; você também pode adicionar dicas de modulepreload para chunks críticos para que o navegador inicie o download mais cedo.
P Meu componente lazy só tem uma exportação nomeada
R Envolva você mesmo: lazy(() => import('./X').then(m => ({ default: m.X }))) transforma a exportação nomeada em uma default.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%