Pergunta de entrevista para Desenvolvedor React

Por que o React precisa de uma key nos itens de lista, e o que quebra de fato se você usar o índice do array?

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

Resposta rápida

As keys dizem ao React qual elemento da lista nova corresponde a qual da lista antiga, para que ele possa mover, manter ou remover nós do DOM e o estado deles em vez de casar apenas pela posição. Índices de array só funcionam para listas estáticas. Se os itens forem reordenados, inseridos no começo ou removidos, o índice de um item muda, o React reaproveita o nó errado, e estado como o valor de um input vai parar na linha errada.

Por que os entrevistadores perguntam isso

Parece pergunta de iniciante, mas as respostas separam as pessoas rápido. A maioria dos candidatos diz que keys ajudam na performance e para por aí. O entrevistador quer ouvir que keys são sobre identidade e preservação de estado, não só velocidade, e que você sabe nomear o modo de falha concreto com keys de índice. Também é um teste rápido de se você já depurou um bug real de lista ou só limpou um aviso do console.

Como estruturar sua resposta

  • Defina key como identidade, não como dica de performance.
  • Explique como o diff pareia filhos antigos e novos pela key.
  • Dê o bug concreto do índice numa lista reordenada ou filtrada.
  • Diga o que você usa como key e o que você evita.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Uma key é como o React responde à pergunta: esse é o mesmo item que eu vi no render passado. Sem ela, ele pareia os filhos por posição, então quando uma linha se move o React acha que o conteúdo mudou e aplica patch no nó existente em vez de movê-lo. Com uma key estável ele sabe que o item se moveu, mantém o nó do DOM e o estado dele, e reordena. A armadilha do índice é que o índice descreve a posição, não o item. Eu peguei isso numa tabela onde cada linha tinha um checkbox e um campo de notas. Apague a linha dois e todas as linhas abaixo sobem um índice, então o React pareia os nós errados e você acaba com as notas de outra pessoa na sua linha. Parece bug de dados e é bug de key. Então eu uso qualquer id estável que venha com os dados, normalmente o id do banco. Se realmente não existir um, eu gero um id quando o item é criado, e não durante o render, porque gerar no render te dá uma key nova a cada passada e remonta a lista inteira.

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

  • Quando usar o índice do array como key é aceitável de verdade?
  • O que acontece se dois irmãos tiverem a mesma key?
  • Como você resetaria de propósito o estado de um componente usando uma key?

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