CodeForge

React 19 de Cero a Experto / Estado

useReducer: el reducer del SC-03, en React

Teoría22 min20 XP

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).