MÓDULO 2: REACT

Listas y Keys

En React es muy común mostrar listas de datos (enemigos, items, jugadores, misiones, etc.). Para renderizar listas usamos .map(), pero siempre debemos agregar una key única a cada elemento.


1. Renderizar una Lista Básica con .map()

function ListaEnemigos() {
  const enemigos = [
    "Goblin",
    "Orco",
    "Esqueleto",
    "Dragón"
  ];

  return (
    <ul>
      {enemigos.map((enemigo, index) => (
        <li key={index}>{enemigo}</li>
      ))}
    </ul>
  );
}

¡Importante! Aunque usar index como key funciona, **no es la mejor práctica**. React prefiere una key única y estable.


2. Usando una Key Única (Mejor práctica)

function Inventario() {
  const items = [
    { id: 1, nombre: "Espada Legendaria", rareza: "Épica" },
    { id: 2, nombre: "Poción de Vida",     rareza: "Común" },
    { id: 3, nombre: "Anillo de Fuego",   rareza: "Rara" },
  ];

  return (
    <div>
      <h3>Inventario</h3>
      <ul>
        {items.map(item => (
          <li key={item.id}>
            {item.nombre} — <strong>{item.rareza}</strong>
          </li>
        ))}
      </ul>
    </div>
  );
}

3. ¿Por qué son importantes las Keys?

Las keys ayudan a React a:

  • Identificar qué elementos cambiaron, se añadieron o se eliminaron.
  • Optimizar el rendimiento (re-renderizado eficiente).
  • Mantener el estado correcto de los componentes (ej: inputs, animaciones).

⚠️ Si no pones key o usas el índice como key en listas dinámicas, puedes tener bugs extraños.


4. Ejemplo Práctico: Lista de Habilidades

function HabilidadesJugador() {
  const habilidades = [
    { id: "h1", nombre: "Golpe Fuerte", daño: 45, tipo: "Físico" },
    { id: "h2", nombre: "Bola de Fuego", daño: 60, tipo: "Mágico" },
    { id: "h3", nombre: "Curación Rápida", daño: 0, tipo: "Soporte" },
  ];

  return (
    <div className="habilidades">
      {habilidades.map(habilidad => (
        <div key={habilidad.id} className="habilidad-card">
          <h4>{habilidad.nombre}</h4>
          <p>Daño: {habilidad.daño} | Tipo: {habilidad.tipo}</p>
        </div>
      ))}
    </div>
  );
}

5. Reglas de las Keys

✓ Correcto: Usa un ID único del dato (recomendado)
✓ Aceptable: Usa índice solo si la lista nunca cambia de orden
✗ Malo: Usar índice en listas dinámicas (añadir/eliminar/reordenar)

🛠️ Tu Misión

Prueba esto en tu proyecto React o en CodeSandbox:

  1. Crea un componente que muestre una lista de 5 items del inventario usando .map().
  2. Asigna una key usando el id de cada item (crea un array de objetos).
  3. Crea otro componente que muestre una lista de misiones con nombre, dificultad y recompensa.
  4. Bonus: Añade un botón que permita agregar un nuevo item al inventario y ver cómo React actualiza correctamente la lista gracias a las keys.
← Lección Anterior