Renderizado condicional y listas: controlar qué se pinta y cuándo

Aprende a mostrar u ocultar bloques según estado y a renderizar colecciones con `map` y `key` correctamente.

Una interfaz real cambia según contexto: usuario autenticado, lista vacía, carga en progreso o error.

React permite expresar estos casos de forma declarativa con condiciones simples en JSX.

Para colecciones, `map` es el patrón base: transformas un array de datos en nodos de UI.

El detalle crítico está en `key`, porque React lo usa para reconciliar elementos y mantener consistencia de estado entre renders.

  • Usa `if` fuera del retorno para casos complejos y ternarios para decisiones cortas.
  • Para bloques grandes, extraer lógica previa al `return` suele ser más legible que ternarios anidados.
  • Para texto o fragmentos cortos, el operador ternario funciona bien y mantiene cercanía con la vista.
  • El patrón `&&` es útil para render opcional, pero ten cuidado con valores como `0` que también se imprimen.
  • La `key` debe identificar cada elemento de forma única y estable en el tiempo.

Condicionales en JSX sin enredarte

Usa `if` fuera del retorno para casos complejos y ternarios para decisiones cortas.

Para bloques grandes, extraer lógica previa al `return` suele ser más legible que ternarios anidados.

Para texto o fragmentos cortos, el operador ternario funciona bien y mantiene cercanía con la vista.

El patrón `&&` es útil para render opcional, pero ten cuidado con valores como `0` que también se imprimen.

Listas con map y key estable

La `key` debe identificar cada elemento de forma única y estable en el tiempo.

Errores típicos que debes evitar

Muchos problemas de UI inestable vienen de decisiones incorrectas en listas.

Si la lista cambia de orden y usas índice, React puede reciclar nodos de forma incorrecta.

Siempre define explícitamente estado de 'sin datos' para evitar pantallas en blanco confusas.

Una condición clara mejora la mantenibilidad más que una expresión inteligente pero opaca.

  • Usar índice como key en listas reordenables.
  • No contemplar estado vacío (`[]`).
  • Anidar condicionales difíciles de leer.
  • Repetir la misma key en varios elementos.
React
05

Renderizado condicional y listas: controlar qué se pinta y cuándo

Aprende a mostrar u ocultar bloques según estado y a renderizar colecciones con `map` y `key` correctamente.

Código del tema: Componentes, estado y render declarativo

📘 Teoría

Condicionales en JSX sin enredarte

Usa `if` fuera del retorno para casos complejos y ternarios para decisiones cortas.

1

Para bloques grandes, extraer lógica previa al `return` suele ser más legible que ternarios anidados.

2

Para texto o fragmentos cortos, el operador ternario funciona bien y mantiene cercanía con la vista.

3

El patrón `&&` es útil para render opcional, pero ten cuidado con valores como `0` que también se imprimen.

Listas con map y key estable

La `key` debe identificar cada elemento de forma única y estable en el tiempo.

Lista bien renderizada
function Tareas({ tareas }) {
  return (
    <ul>
      {tareas.map((tarea) => (
        <li key={tarea.id}>{tarea.titulo}</li>
      ))}
    </ul>
  );
}

Errores típicos que debes evitar

Muchos problemas de UI inestable vienen de decisiones incorrectas en listas.

Si la lista cambia de orden y usas índice, React puede reciclar nodos de forma incorrecta.

Siempre define explícitamente estado de 'sin datos' para evitar pantallas en blanco confusas.

Una condición clara mejora la mantenibilidad más que una expresión inteligente pero opaca.

  • Usar índice como key en listas reordenables.
  • No contemplar estado vacío (`[]`).
  • Anidar condicionales difíciles de leer.
  • Repetir la misma key en varios elementos.

🧪 Aprende probando

Ejemplo Ejemplo: panel con lista o estado vacío Componente que decide qué renderizar según el número de tareas.

🏁 Retos

Reto Reto: corrige la key de la lista Sustituye una `key` basada en índice por una estable basada en `id`.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .