Como você organiza as chaves nas listas ao trabalhar com React?
sobes.tech IA
Resposta da IA
No React, as chaves são usadas para identificar elementos em listas durante a sua renderização. Isso ajuda o React a atualizar a interface de forma eficiente, determinando quais elementos mudaram, foram adicionados ou removidos.
Princípios básicos para atribuir chaves:
- Unicidade: Cada chave deve ser única entre seus elementos vizinhos na mesma lista.
- Estabilidade: A chave deve permanecer constante para o mesmo elemento ao longo de todo o ciclo de vida do componente, mesmo durante a re-renderização.
Formas ótimas de atribuir chaves:
-
Uso de um identificador único dos dados: Se seus dados têm um ID estável e único (por exemplo,
idde um banco de dados), use-o como chave.// Suponha que você tenha um array de objetos com um id único const items = [ { id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }, { id: 3, name: 'Item 3' }, ]; function ItemList({ items }) { return ( <ul> {items.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> ); }Este método é o mais recomendado, pois garante a estabilidade da chave perante quaisquer alterações nos dados (reordenação, adição, remoção).
-
Uso do índice do array (com precaução): Apenas em casos muito específicos, quando:
- A lista é estática e nunca muda.
- Os elementos na lista nunca são reordenados, adicionados ou removidos.
- A lista não é filtrada.
// Apenas se os items garantem que nunca mudam const items = ['Item 1', 'Item 2', 'Item 3']; function StaticItemList() { return ( <ul> {items.map((item, index) => ( <li key={index}>{item}</li> ))} </ul> ); }Importante: Usar o índice como chave em listas não estáveis pode levar a comportamentos incorretos na UI, perda de estado dos elementos (por exemplo, texto inserido em inputs), ou renderização ineficiente. O React pode reutilizar componentes com dados incorretos devido a uma má correspondência de chaves.
-
Geração de chave com base na combinação de dados: Se os seus dados não têm um ID único, pode criar uma chave composta com base em várias propriedades estáveis. No entanto, isso é menos preferível do que usar um ID único.
// Exemplo: combinação de nome e data const events = [ { name: 'Festa', date: '2023-10-26' }, { name: 'Reunião', date: '2023-10-27' }, ]; function EventList({ events }) { return ( <ul> {events.map(event => ( <li key={`${event.name}-${event.date}`}>{`${event.name} - ${event.date}`}</li> ))} </ul> ); }
Resumindo: a forma preferida e segura é sempre usar um identificador único e estável dos dados. O uso do índice é justificado apenas em casos muito específicos e apenas para listas estáticas.