Estado de servidor é dado que não é seu: vive num banco de dados, pode estar desatualizado no instante em que chega, e precisa de cache, revalidação, retentativas e deduplicação. Estado de cliente é dado que é seu, como qual aba está aberta ou o que foi digitado num formulário, e é síncrono e sempre correto. Trate os dois de forma diferente: um cache de queries para estado de servidor, estado local de componente ou um store pequeno para estado de cliente.
Por que os entrevistadores perguntam isso
O entrevistador quer saber se você ainda empurraria respostas de API para um store global e escreveria flags de carregamento na mão. Separar os dois é a sacada por trás das bibliotecas modernas de dados, e prevê quanta complexidade acidental seu código carrega. Também abre perguntas de acompanhamento sobre invalidação de cache, atualizações otimistas e o que acontece quando dois componentes precisam do mesmo dado.
Como estruturar sua resposta
- Defina as duas categorias em termos de propriedade do dado.
- Liste o que estado de servidor precisa e estado de cliente não.
- Nomeie a ferramenta que você usa para cada um e por quê.
- Dê um sintoma de errar isso.
Exemplo de resposta
Estado de servidor é uma cópia em cache de algo que não controlo. Chega de forma assíncrona, pode estar desatualizado, dois componentes podem querer ao mesmo tempo, e precisa de revalidação, retentativas e deduplicação. Estado de cliente é meu: o acordeão aberto, o rascunho num formulário, o filtro selecionado antes de eu aplicar. É síncrono e nunca está desatualizado. Quando comecei a tratar os dois como problemas diferentes, muito código sumiu. Dado de servidor vai para um cache de queries chaveado pelos seus parâmetros, que cuida dos estados de carregamento e erro, deduplica requisições concorrentes e refaz o fetch ao focar a janela. Estado de cliente fica como estado local do componente até mais de um componente precisar, e só então vai para um store compartilhado pequeno. O sintoma de errar isso é bem reconhecível: um store global cheio de entidades, booleanos de carregamento escritos na mão em cada tela, e um bug em que dois componentes buscam o mesmo usuário e discordam sobre ele. Já mantive essa aplicação e não a construiria de novo.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você lida com uma atualização otimista que o servidor rejeita?
- Qual é a sua estratégia de invalidação depois de uma mutação?
- Quando o estado de cliente genuinamente precisa ser global?
Mais perguntas para Desenvolvedor Frontend
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas