Why You Need the React Key Prop
Você vê este erro no seu console: "Each child in a list should have a unique 'key' prop."
Muitos desenvolvedores o ignoram. Isso é um erro. Este aviso informa sobre problemas de desempenho e possíveis bugs.
What is a key prop? Ela ajuda o React a identificar itens específicos em uma lista. Ela informa ao React qual item mudou, foi movido ou foi removido. Sem uma key, o React renderiza novamente a lista inteira toda vez que algo muda. Isso torna seu app mais lento.
Pense em uma biblioteca com 1000 livros. Se você adicionar um novo livro no meio, terá que mover todos os outros livros para abrir espaço. Uma key funciona como um ID único para cada livro. Ela permite que o React encontre o local exato sem precisar mover todo o resto.
The Reconciliation Process O React usa um algoritmo de diffing para comparar o novo Virtual DOM com o antigo.
- O estado muda.
- O React constrói uma nova árvore.
- O React compara as árvores usando keys.
- O React atualiza apenas os elementos que mudaram.
The common mistake: Using array index as a key.
Nunca use key={index} se sua lista mudar. Se você adicionar ou excluir itens, o índice de cada item será deslocado. O React ficará confuso e renderizará novamente itens que, na verdade, não mudaram. Isso desperdiça memória e causa bugs na UI.
How to fix it:
- Use um ID estável do seu banco de dados (como
user.id). - Use uma string única como
uuidse seus dados não possuírem um ID. - Evite
Math.random()para keys. Ele cria um novo ID a cada renderização, o que força os componentes a serem remontados e causa oscilações na UI (flickering).
Best practices:
- As keys devem ser estáveis.
- As keys devem ser únicas entre irmãos (siblings).
- Use IDs de banco de dados para obter o melhor desempenho.
Key Comparison Table: • Database ID: Recomendado. Estável e rápido. • Array Index: Não recomendado. Causa bugs durante ordenação ou filtragem. • Math.random(): Evite. Causa remontagens desnecessárias.
Summary for your workflow: Se você vir esse erro, seus componentes carecem de um identificador permanente. Verifique a resposta da sua API em busca de campos únicos como email ou ID. Corrija isso para economizar de 30% a 40% em renderizações desnecessárias.
