Pergunta de entrevista para Desenvolvedor React

Quais são as regras dos hooks, e por que elas existem?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Chame hooks só no nível mais alto de um componente ou de outro hook, nunca dentro de uma condição, laço ou callback aninhado, e só a partir de funções React. O motivo é que o React guarda o estado dos hooks como uma lista ordenada na fiber e casa cada chamada com um slot pela ordem de chamada, não pelo nome. Mude a ordem entre renders e todo hook depois daquele ponto lê o slot errado.

Por que os entrevistadores perguntam isso

As regras são fáceis de recitar, então o que o entrevistador está pedindo mesmo é o porquê. Um candidato que explica a lista ordenada de slots entende a implementação e vai raciocinar direito sobre hooks customizados, lógica condicional e supressões de lint. Também abre um follow up natural sobre como você estrutura o código quando só às vezes precisa de algo, que é onde candidatos mais fracos começam a escrever hooks dentro de blocos if.

Como estruturar sua resposta

  • Enuncie as duas regras de forma direta e curta.
  • Explique o mecanismo de slots por ordem de chamada como o motivo.
  • Descreva o que de fato quebra quando a ordem muda.
  • Diga como você lida com necessidades condicionais sem quebrar as regras.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Duas regras: hooks ficam no nível mais alto, e só são chamados de dentro de um componente ou de outro hook. O motivo é a implementação. O React não sabe o nome dos seus hooks, ele mantém uma lista na fiber e move um cursor por ela enquanto sua função roda, então a primeira chamada de useState pega o slot um, a segunda pega o slot dois, e assim por diante. Se você embrulhar um hook num if, em alguns renders o cursor cai uma posição fora, e todo hook depois daquele lê o estado do hook anterior. Você ganha falhas bizarras onde um booleano vira uma função. Quando eu preciso de algo condicionalmente, eu sempre chamo o hook e faço o próprio hook não fazer nada, por exemplo passando uma flag enabled para um hook de query, ou empurrando o desvio um nível acima para que os dois caminhos sejam componentes separados. Eu mantenho as regras do eslint ligadas e trato uma supressão como algo que precisa de um comentário explicando exatamente o porquê.

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 funciona

Perguntas de acompanhamento que você pode esperar

  • Como você lidaria com um hook de que você só precisa às vezes?
  • O que o plugin do eslint de fato pega, e o que ele deixa passar?
  • Como você escreveria um hook customizado que compõe outros dois hooks?

Mais perguntas para Desenvolvedor React

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

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot