React 19 de Cero a Experto / Estado
El estado es una foto fija: updates funcionales
Una sutileza que confunde a TODO principiante de React: dentro de un render, el estado es una
FOTO FIJA —no cambia aunque llames a set varias veces—. Por eso setCuenta(cuenta + 1) tres
veces seguidas suma solo 1, no 3. Entender esto y su solución (las actualizaciones funcionales)
te ahorra una clase entera de bugs sutiles.
La foto del momento
El problema: tres sumas, un resultado
Míralo en vivo. El botón de la izquierda llama setCuenta(cuenta + 1) tres veces… y suma solo
1:
El botón "mal" suma 1 porque las tres llamadas usan cuenta —la foto de este render, digamos
0— y todas calculan 0 + 1 = 1. React no actualiza cuenta a mitad del manejador; el nuevo
valor solo aparece en el siguiente render. El botón "bien" suma 3 porque usa la forma
FUNCIONAL.
La solución: la forma funcional
Por qué React funciona así: el batching
Este comportamiento no es un capricho —es una optimización llamada batching. React AGRUPA
varias actualizaciones de estado que ocurren en el mismo evento y hace UN solo re-render con el
resultado final, en vez de repintar tres veces. Por eso el estado se mantiene como una foto
estable durante el manejador: React está juntando tus cambios para aplicarlos de una vez. La
forma funcional (prev) es cómo le dices "encadena estas actualizaciones", y él las aplica en
orden sobre el valor más reciente. El resultado: una UI rápida (menos renders) y actualizaciones
predecibles cuando usas prev.
En un manejador escribes setCuenta(cuenta + 1) dos veces seguidas, con cuenta valiendo 5. ¿Cuál es el resultado y cómo sumar 2 de verdad?
Mini-reto
Comprueba el snapshot: 1) crea un contador y un botón "+2" que llame setCuenta(cuenta + 1)
dos veces —observa que suma 1—; 2) cámbialo a la forma funcional setCuenta(prev => prev + 1)
dos veces y confirma que ahora suma 2; 3) haz un toggle (un booleano abierto) con
setAbierto(prev => !prev) y siente por qué prev es la forma segura. Interioriza que el
estado es una foto.
Qué sigue
Dominas el estado numérico. El caso más común en apps reales son los FORMULARIOS: inputs cuyo valor vive en el estado. La próxima lección enseña los inputs controlados —el patrón donde el estado es la única fuente de verdad de lo que el usuario escribe—, la base de todo formulario en React.