Pergunta de entrevista para Desenvolvedor React

Você herda uma base de código grande cheia de componentes de classe. Como você abordaria a migração para hooks?

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

Resposta rápida

De forma incremental, e só onde isso trouxer algum ganho. Classes e componentes de função interoperam bem, então não há necessidade de uma reescrita de uma vez só. Converta primeiro os componentes folha, extraia lógica compartilhada de higher order components e render props para hooks customizados, e mantenha as error boundaries como classes já que elas ainda precisam ser. Amarre cada conversão a um trabalho que você já está fazendo, com testes em cima de comportamento e não de implementação.

Por que os entrevistadores perguntam isso

Essa é uma pergunta de julgamento disfarçada de pergunta de migração. O entrevistador quer ver se você queimaria um trimestre numa reescrita sem benefício visível para o usuário ou se encontraria um caminho incremental. Ele também está checando conhecimento prático: quais métodos de ciclo de vida mapeiam limpo para efeitos, quais não, e que error boundaries não podem ser convertidas, mais como você evita regressões sem cobertura completa.

Como estruturar sua resposta

  • Rejeite a reescrita de uma vez só e diga por que o incremental funciona aqui.
  • Dê sua ordem: folhas primeiro, lógica compartilhada para hooks customizados.
  • Nomeie as peças que não convertem de forma limpa.
  • Explique como você se protege de regressões e mede o progresso.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu não faria isso como um projeto, eu faria como um hábito. Classes e componentes de função convivem numa boa, então não existe força obrigando a converter tudo, e uma reescrita sem mudança visível para o usuário é difícil de vender e uma ótima forma de introduzir bugs. Então a regra vira: se você já está mexendo num arquivo, e ele é uma folha ou quase folha, converta. O prêmio de verdade não são os componentes de qualquer forma, é a lógica compartilhada presa em higher order components e render props, porque aquilo vira hooks customizados que todo mundo pode usar. Sobre o mapeamento, componentDidMount e componentWillUnmount viram um efeito com cleanup, componentDidUpdate normalmente se divide em vários efeitos por assunto, e getDerivedStateFromProps quase sempre acaba sendo estado derivado que deveria ser só calculado durante o render. Error boundaries continuam como classes, isso não mudou. Antes de converter qualquer coisa não trivial eu quero testes de nível de comportamento em volta, testando o que o usuário vê e não o estado interno, para a conversão ser comprovadamente neutra.

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

  • Quais métodos de ciclo de vida não têm equivalente limpo em hooks?
  • Como você converteria um higher order component que embrulha quarenta telas?
  • Como você impede que o time migre pela metade e empaque?

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