0Pricing
React Academy · Lección

Depuración de errores comunes de React

Diagnostique advertencias por claves ausentes, errores de estado undefined y errores de hidratación.

Depuración de errores comunes de React es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Bienvenida

En esta lección diagnosticará los errores más comunes de React: advertencias por claves faltantes, errores de estado `undefined`, demasiados renderizados y discrepancias de hidratación.

Advertencia por clave faltante

React muestra el mensaje: *Cada elemento secundario de una lista debe tener una prop "key" única.* Esto ocurre cuando renderiza un array sin añadir una prop `key`. Corríjalo añadiendo una clave estable y única a cada elemento de la lista.
// Bad
items.map(item => <li>{item.name}</li>)

// Good
items.map(item => <li key={item.id}>{item.name}</li>)

No se pueden leer propiedades de undefined

Este fallo suele indicar que el estado es `undefined` durante el primer renderizado. Inicialice siempre el estado con un valor predeterminado seguro (`[]` para arrays, `{}` para objetos y `null` para valores que comprueba antes de usar).
// Bad — crashes if data is undefined
const [data, setData] = useState();
return <p>{data.name}</p>;

// Good
const [data, setData] = useState(null);
return data ? <p>{data.name}</p> : <p>Loading...</p>;

Error de demasiados renderizados

React lanza el error *Demasiados renderizados* cuando un componente entra en un bucle infinito de renderizado, normalmente porque llama a `setState` incondicionalmente durante el renderizado o pasa directamente como prop una función inline `() => setState(...)` que se activa en cada renderizado.
// Bad — setState called on every render
function Counter() {
  const [n, setN] = useState(0);
  setN(n + 1); // infinite loop!
  return <p>{n}</p>;
}

Corregir demasiados renderizados

Mueva las actualizaciones de estado a los controladores de eventos o a useEffect. No llame nunca a setState directamente en el nivel superior del cuerpo de un componente.
// Good — update only on click
function Counter() {
  const [n, setN] = useState(0);
  return <button onClick={() => setN(n + 1)}>{n}</button>;
}

Advertencia de discrepancia de hidratación

En las aplicaciones SSR, React muestra la advertencia *La hidratación falló porque la interfaz de usuario inicial no coincide con lo que se renderizó en el servidor.* Entre las causas habituales se encuentran usar `Date.now()` o `Math.random()` durante el renderizado, o que las extensiones del navegador inyecten HTML.

Corregir discrepancias de hidratación

Mueva los valores dinámicos (marcas de tiempo e ID aleatorios) a un `useState` inicializado dentro de `useEffect`, de modo que el servidor siempre renderice un valor estático y el cliente lo actualice después del montaje.
const [ts, setTs] = useState('');
useEffect(() => {
  setTs(Date.now().toString());
}, []);
return <p>{ts}</p>;

El estado no se actualiza inmediatamente

Recuerde que `setState` es asíncrono. Registrar el estado justo después de llamarlo muestra el valor anterior. Para ver el valor actualizado, regístrelo dentro de un `useEffect` que tenga la variable de estado como dependencia.
const [count, setCount] = useState(0);

function handleClick() {
  setCount(count + 1);
  console.log(count); // still old value!
}

useEffect(() => {
  console.log('updated:', count); // correct
}, [count]);

El componente no se actualiza al cambiar una prop

Si un componente no se actualiza cuando cambia una prop, compruebe que no esté mutando un objeto o un array directamente. React utiliza la igualdad por referencia: mutar un objeto existente no activa un nuevo renderizado.
// Bad — same reference, no re-render
const list = [];
list.push('item');
setList(list);

// Good — new array reference
setList([...list, 'item']);

Leer errores en la superposición de errores

Cuando una aplicación de React falla durante el desarrollo, aparece una superposición de errores en el navegador. Lea la **pila de componentes** que aparece abajo: muestra todos los componentes que renderizaron el componente que falló, lo que permite localizar claramente el origen del error.

Comprobación rápida

¿Cuál es la causa más habitual del error de React «Demasiados renderizados»?

Resumen

Ahora puede corregir los errores más comunes de React: añadir claves estables a las listas, inicializar el estado de forma segura, evitar setState durante el renderizado, gestionar las discrepancias de hidratación y leer la pila de componentes de la superposición de errores.

Curso completado

¡Enhorabuena! Ha completado **React DevTools & Debugging**. Ahora puede instalar DevTools, inspeccionar árboles de componentes y estados, hacer profiling de renderizados y diagnosticar los errores de ejecución de React más frecuentes.

Preguntas frecuentes

¿La lección «Depuración de errores comunes de React» es gratis?

Sí — el texto completo de «Depuración de errores comunes de React» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Depuración de errores comunes de React»?

Diagnostique advertencias por claves ausentes, errores de estado undefined y errores de hidratación. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Depuración de errores comunes de React»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Instalación y apertura de React DevTools
  2. Inspección de árboles de componentes y props
  3. Uso de la pestaña Profiler
  4. Depuración de errores comunes de React
← Volver a React Academy