CodeForge

React 19 de Cero a Experto / React 19 moderno

Reto: Mi Bolsillo con envío optimista

Reto40 min60 XP

Cierras el módulo de React 19 construyendo la experiencia que estos hooks buscan: una "Mi Bolsillo" donde agregar un gasto se siente INSTANTÁNEO —aparece al instante con un relojito, se confirma cuando el "servidor" responde, y se revierte si falla—. Lo construyes con useState (que ya corre en tu entorno) para dominar el PATRÓN a mano; la solución te muestra cómo useActionState y useOptimistic lo expresarían en un proyecto React 19 real. Vas a entender la UI optimista de dentro hacia afuera.

Reto

Mi Bolsillo optimista

Media35 min60 XP(×2 sin mirar la solución)

Qué debes construir

Una "Mi Bolsillo" que agrega gastos con envío optimista contra un servidor simulado:

  1. Servidor simulado: una función guardar(nombre): Promise<void> que tarde ~1s y falle 1 de cada 4 veces (con Math.random()).
  2. Agregar optimista: al enviar, el gasto aparece INMEDIATAMENTE en la lista, marcado como pendiente (opacidad + un ).
  3. Confirmar: cuando el servidor responde OK, el gasto pierde la marca de pendiente ().
  4. Revertir: si el servidor falla, el gasto se QUITA de la lista y se muestra un aviso de error.
  5. El botón muestra un estado de "Guardando…" mientras hay un envío en curso.

Reglas

  • Todo tipado con TypeScript; actualizaciones inmutables (map, filter, [...]).
  • La lista es la fuente de verdad; el "pendiente" es una marca en cada item.
  • Distingue claramente los tres momentos: optimista (se ve ya), confirmado, revertido.

35:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 4 conquistado: dominas el React moderno —Actions, useActionState, useOptimistic, use(), la frontera servidor/cliente y el compilador—. Ya no solo sabes React: sabes hacia dónde va. El módulo 5 aterriza en el problema más común de toda app real: DATOS. Cargar, cachear, reintentar, invalidar y sincronizar con el servidor sin reinventar la rueda —con TanStack Query, Suspense y los Error Boundaries—.