Sobes.tech
Junior

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:

  1. Uso de um identificador único dos dados: Se seus dados têm um ID estável e único (por exemplo, id de 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).

  2. 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.

  3. 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.