React 19 de Cero a Experto / Estado
useReducer: el reducer del SC-03, en React
Cuando el estado tiene muchas acciones que lo cambian de formas distintas —agregar, borrar,
editar, limpiar—, varios useState sueltos se vuelven un desorden. useReducer los organiza en
un solo lugar: una función pura que recibe el estado y una acción, y devuelve el nuevo estado.
Y te va a sonar íntimo, porque es EXACTAMENTE el reducer con acciones discriminadas que
construiste a mano en el supercurso de TypeScript.
El cajero central en vez de mil botones
El reducer que ya conoces
En el supercurso de TypeScript construiste un reducer(estado, accion) con acciones como
discriminated union y un switch exhaustivo. useReducer es ese mismo patrón, conectado a
React:
Reconoces las piezas del SC-03: el type Accion como discriminated union, el reducer puro con
su switch que estrecha cada caso, la inmutabilidad ([...estado, ...], filter). Lo NUEVO es
useReducer(reducer, []), que devuelve [estado, dispatch]. dispatch(accion) es cómo envías
una acción al reducer —el equivalente de setEstado, pero describiendo QUÉ pasó ({ tipo: "borrar", id }) en vez de calcular el nuevo estado en el componente. React corre tu reducer y
re-renderiza con el resultado.
Por qué useReducer ordena el estado complejo
useState o useReducer
¿Qué es 'dispatch' en useReducer y en qué se diferencia de un setState normal?
Mini-reto
Convierte un estado a reducer: 1) toma un contador con acciones "incrementar", "decrementar" y
"reiniciar"; 2) escribe el type Accion (discriminated union) y el reducer puro con su
switch; 3) conéctalo con useReducer y tres botones que despachen cada acción. Bonus: agrega
assertNever en el default (SC-03) y comprueba que TS te obliga a manejar toda acción nueva.
Sientes cómo el reducer del SC-03 encaja en React sin esfuerzo.
Qué sigue
Módulo 2 cerrado: dominas el estado —useState, la inmutabilidad, lifting, useReducer—, el
corazón reactivo de React. El reto del módulo junta todo en una "Mi Bolsillo" interactiva de
verdad: agregar, borrar y filtrar gastos con estado. Después, el módulo 3 trae los EFECTOS: cómo
React se conecta con el mundo exterior (APIs, temporizadores, suscripciones).