Saltar al contenido

Lección 11 de 16 · Lectura y práctica

Estado del cliente: hooks personalizados y contexto

Estado del cliente: hooks personalizados y contexto Esta leccion pertenece al curso Desarrollo Web Full Stack con Next.js y esta pensada para que avances con criterio profesional, no solo con teoria. Primero entiende el concepto,.

Del concepto a la práctica

Taller de esta lección

El contexto es útil cuando varias partes de una interfaz necesitan el mismo carrito, pero no convierte cada dato en estado global. Guarda las líneas mínimas y calcula el subtotal a partir de ellas. Un hook personalizado puede ocultar la forma de acceso sin ocultar la regla matemática.

Ejemplo resuelto

tsx
const lineas = [{ precio: 4, cantidad: 2 }, { precio: 7, cantidad: 1 }];
const subtotal = lineas.reduce((suma, linea) => suma + linea.precio * linea.cantidad, 0);

El subtotal es 15, no un segundo estado que podría quedar desactualizado.

Un proveedor de cliente puede exponer el estado sin duplicar el subtotal:

tsx
'use client';
import { createContext, useContext, useState, type ReactNode } from 'react';
type Linea = { id: string; precio: number; cantidad: number };
const Contexto = createContext<{ lineas: Linea[]; agregar: (l: Linea) => void } | null>(null);
export function CarritoProvider({ children }: { children: ReactNode }) {
  const [lineas, setLineas] = useState<Linea[]>([]);
  return <Contexto.Provider value={{ lineas, agregar: l => setLineas(actual => [...actual, l]) }}>
    {children}
  </Contexto.Provider>;
}
export function useCarrito() {
  const estado = useContext(Contexto);
  if (!estado) throw new Error('Falta CarritoProvider');
  const subtotal = estado.lineas.reduce((s, l) => s + l.precio * l.cantidad, 0);
  return { ...estado, subtotal };
}

Monta el proveedor una vez alrededor de los consumidores y usa IDs distintos en este ejercicio. Para añadir el mismo producto, define primero si incrementarás su cantidad o rechazarás el duplicado.

Pruébalo

  1. Define el contexto con una lista vacía inicial.

  2. Añade una línea de precio 4 y cantidad 2.

  3. Añade otra de precio 7 y cantidad 1.

  4. Expón un hook para leer líneas y subtotal.

Comprueba tu resultado

Error frecuente: guardar subtotal y actualizarlo en varios manejadores. Corrección: deriva el valor de las líneas actuales.

Ejercicio: añade una tercera línea de precio 3 y cantidad 3; el subtotal esperado es 24, porque 4×2 + 7×1 + 3×3 = 24, y eliminarla debe devolver 15.

Diagrama de decisión con ramas Sí y No y un bucle que procesa cada elemento de una lista.
CursaloMapa de práctica
Cómo avanza un programa

Una condición decide qué camino ejecuta el programa. Un bucle repite una operación mientras queden elementos, y termina cuando la lista se agota. Separar ambas ideas ayuda a seguir el flujo y comprobar casos límite.

Ver la infografía en tamaño completo ↗
Fuentes para profundizar

Estado del cliente: hooks personalizados y contexto

Esta leccion pertenece al curso Desarrollo Web Full Stack con Next.js y esta pensada para que avances con criterio profesional, no solo con teoria. Primero entiende el concepto, despues aplicalo en una situacion concreta y finalmente deja evidencia de lo que aprendiste.

Objetivo practico

Al terminar, deberias poder explicar el tema con tus palabras, reconocer cuando usarlo y construir una version simple que sirva como base para un proyecto real.

Pasos recomendados

  1. Lee el concepto y escribi una definicion breve.
  2. Identifica un caso de uso laboral donde aparezca este problema.
  3. Construye un ejemplo pequeno y documenta las decisiones.
  4. Compara tu resultado con el checklist de la leccion.

Sigue con Desarrollo Web Full Stack con Next.js

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.