16 de Agosto de 2025
Onde Page, Layout, Component e Hook Devem Decidir as Coisas
Muita árvore de frontend fica confusa porque a responsabilidade de cada camada nunca foi delimitada de verdade.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Frontend
O problema
Muita arquitetura frontend degrada porque o time cria as camadas, mas não define o papel delas.
No papel existem:
- page
- layout
- component
- hook
Na prática, qualquer uma pode acabar fazendo qualquer coisa.
Aí aparecem sintomas previsíveis:
- page gigante decidindo detalhe de UI
- layout conhecendo regra de negócio
- component disparando busca, transformação e navegação
- hook escondendo acoplamento atrás de nome bonito
Modelo mental
Essas peças não existem para deixar a árvore mais bonita.
Elas existem para separar responsabilidades.
Em frase curta:
arquitetura frontend escala melhor quando cada camada decide só o tipo de coisa que faz sentido para ela decidir.
Não precisa ser uma regra religiosa.
Mas precisa existir uma intuição consistente.
Quebrando o problema
O papel da page
Page costuma ser um bom lugar para:
- compor a tela
- conectar contexto de navegação
- decidir fluxo principal
- alinhar dados de entrada daquela rota
Page normalmente não deveria carregar:
- microdetalhe visual
- regra genérica de layout
- lógica reutilizável enterrada ali sem motivo
O papel do layout
Layout é sobre moldura estrutural.
Exemplos:
- shell da aplicação
- barra lateral
- header
- áreas persistentes
- organização de regiões da tela
Quando layout começa a decidir regra específica de domínio, ele vira um ponto de vazamento.
O papel do component
Component é onde a UI concreta ganha forma.
Ele costuma ser um bom lugar para:
- renderização
- interação local
- composição visual
- pequenas decisões de comportamento imediato
O problema vem quando ele vira dono de:
- estratégia de busca
- regra transversal de domínio
- sincronização entre camadas demais
O papel do hook
Hook é útil quando existe comportamento repetível ou lógica de integração que faz sentido encapsular.
Ele não deveria existir só para “tirar código da tela”.
Sinais de hook bom:
- nomeia um comportamento real
- esconde detalhe incidental
- deixa quem usa com API mais clara
Sinais de hook ruim:
- virou gaveta de código solto
- mistura estado, fetch, analytics, navegação e regra de negócio sem critério
- só mudou o problema de arquivo
Exemplo simples
Imagine uma tela de faturamento.
Uma divisão mais limpa poderia ser:
- page decide qual conta está em foco e compõe a tela
- layout cuida da moldura comum do painel
- components renderizam tabela, filtros e blocos de resumo
- hook encapsula a lógica de paginação e carregamento da lista
Versão ruim:
- page faz fetch
- page transforma dados
- page decide estado visual
- page conhece navegação
- component conhece query params
- hook faz metade disso sem fronteira clara
Nesse cenário, o problema não é falta de abstração.
É abstração sem dono.
Erros comuns
- Criar hook para esconder volume, não para encapsular responsabilidade.
- Jogar no layout o que era decisão da tela.
- Transformar page em arquivo onipotente.
- Fazer component saber demais sobre backend e navegação ao mesmo tempo.
Como um senior pensa
Quem enxerga melhor arquitetura de frontend costuma perguntar:
- qual camada deveria saber disso?
- essa decisão é estrutural, visual, de fluxo ou de comportamento reutilizável?
- estou separando responsabilidade ou só espalhando código em mais arquivos?
Esse filtro costuma melhorar a base mais do que qualquer convenção de pasta.
O que isso muda no time
Quando as camadas param de competir entre si:
- a leitura melhora
- o reuso fica mais natural
- review fica menos ambíguo
- a evolução da tela exige menos escavação arqueológica
No fim, muita “arquitetura frontend” é só fronteira de decisão bem feita.
Se toda camada decide tudo, nenhuma camada ajuda de verdade.
Quando cada uma sabe seu papel, a base começa a respirar.
Resumo rápido
O que vale manter na cabeça
- Page, layout, component e hook não são só pastas diferentes; eles ajudam a separar tipos diferentes de decisão.
- Quando toda camada decide tudo, o acoplamento sobe e a leitura piora.
- Hook bom encapsula lógica repetível; não vira depósito de tudo que não coube em outro lugar.
- Escala em frontend costuma vir mais de fronteira clara do que de abstração sofisticada.
Checklist de pratica
Use isto ao responder
- Consigo explicar por que essa decisão mora na page e não no component?
- Meu layout está organizando estrutura ou carregando regra de produto sem perceber?
- Esse hook realmente encapsula um comportamento reutilizável ou só esconde bagunça?
- Se outra pessoa entrar no arquivo, ela entende rápido qual camada é dona do quê?
Você concluiu este artigo
Próximo passo
O Que Roda no Cliente e no Servidor Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.