Um componente re-renderiza quando o estado dele muda, quando um contexto que ele consome publica um valor novo, ou quando o pai re-renderiza e produz um elemento novo para ele. Renderizar apenas chama a função e produz uma descrição da UI. O React então compara isso com a árvore anterior e aplica só as mudanças de DOM que diferem, então a maioria dos re-renders não toca no DOM.
Por que os entrevistadores perguntam isso
Muitos candidatos recorrem a useMemo e useCallback por reflexo sem saber o que dispara trabalho em primeiro lugar. O entrevistador quer evidência de que você consegue raciocinar sobre as fases de render e de commit separadamente, que você mede antes de otimizar, e que você sabe que memoização tem custo. É também um teste discreto de se você já perfilou um app React real ou só leu sobre performance.
Como estruturar sua resposta
- Liste os três gatilhos de um render.
- Separe a fase de render da fase de commit.
- Explique por que uma prop de objeto novo quebra a memoização em vez de forçar trabalho no DOM.
- Diga como você mediria antes de mudar qualquer coisa.
Exemplo de resposta
Três coisas disparam isso: uma atualização de estado no componente, uma mudança no valor de um contexto que ele assina, ou o pai re-renderizando. Essa última é onde as pessoas se surpreendem, porque um render do pai roda de novo toda função filha independentemente de as props dela terem mudado de valor. Mas renderizar só produz uma árvore de elementos. O React reconcilia aquilo contra a árvore anterior e aplica o conjunto mínimo de mutações no DOM, então um re-render costuma ser barato e não tocar no DOM nenhuma vez. Os casos caros são subárvores grandes e computação pesada dentro do corpo do render. Quando uma página parecia lenta em um produto em que eu trabalhei, eu abri o profiler do React DevTools em vez de chutar, e o culpado era um único contexto guardando ao mesmo tempo o usuário atual e uma string de busca ao vivo, então cada tecla re-renderizava toda a casca autenticada. Separar aquilo em dois contextos resolveu em umas dez linhas. Eu só recorro ao memo depois que o profiler me diz que uma subárvore específica é o problema.
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
- Quando o React.memo de fato ajuda, e quando ele é só overhead?
- Como a prop key muda o comportamento da reconciliação?
- O que você usaria no lugar de contexto para atualizações de alta frequência?
Mais perguntas para Desenvolvedor Full Stack
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