Manejando multiples estados

Lectura
12 min~2 min lectura
Objetivo de la lección

Trabaja con un caso propio o con una empresa ficticia, pero deja claro el problema, la decision y el resultado.

Puntos de control
  • Organizando el estado
  • Multiples useState
  • Estado agrupado
  • Cuando separar vs agrupar?

Organizando el estado

Multiples useState

function Formulario() {
  const [nombre, setNombre] = useState('');
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [errors, setErrors] = useState({});
  const [isSubmitting, setIsSubmitting] = useState(false);

  // Cada estado es independiente
  // Util cuando no estan relacionados
}

Estado agrupado

function Formulario() {
  // Agrupa estados relacionados
  const [form, setForm] = useState({
    nombre: '',
    email: '',
    password: ''
  });

  const [ui, setUi] = useState({
    isSubmitting: false,
    errors: {}
  });

  const handleChange = (e) => {
    const { name, value } = e.target;
    setForm(prev => ({ ...prev, [name]: value }));
  };
}

Cuando separar vs agrupar?

  • Separar: Estados que cambian independientemente
  • Agrupar: Estados que siempre cambian juntos

Ejemplo practico: Filtros

function ProductList() {
  // Estados de filtro (relacionados)
  const [filters, setFilters] = useState({
    categoria: 'all',
    precioMin: 0,
    precioMax: 1000,
    ordenar: 'nombre'
  });

  // Estado de datos (independiente)
  const [productos, setProductos] = useState([]);

  // Estado de UI (independiente)
  const [isLoading, setIsLoading] = useState(false);

  const updateFilter = (key, value) => {
    setFilters(prev => ({ ...prev, [key]: value }));
  };

  return (
    <div>
      <select
        value={filters.categoria}
        => updateFilter('categoria', e.target.value)}
      >
        <option value="all">Todas</option>
        <option value="tech">Tecnologia</option>
      </select>

      <input
        type="range"
        value={filters.precioMax}
        => updateFilter('precioMax', e.target.value)}
      />
    </div>
  );
}

Levantando el estado (Lifting State)

// Cuando dos componentes necesitan compartir estado,
// muevelo al componente padre mas cercano

function App() {
  const [temperatura, setTemperatura] = useState(20);

  return (
    <div>
      <TermometroA temp={temperatura} />
      <TermometroB temp={temperatura} />
    </div>
  );
}

Practica de portfolio

Convierte esta leccion en evidencia real: arma una entrega pequena que puedas mostrar en una entrevista, en LinkedIn o en tu portfolio. Trabaja con un caso propio o con una empresa ficticia, pero deja claro el problema, la decision y el resultado.

  • Entregable: una captura, documento, repositorio o tablero con el resultado final.
  • Checklist: objetivo, pasos seguidos, criterio de calidad y mejora pendiente.
  • Mini-rubrica: si otra persona lo revisa, debe entender que hiciste, por que y como repetirlo.
Laboratorio de práctica

Antes de marcar esta lección como completa, escribí una evidencia breve para React Fundamentals: un ejemplo, una decisión, una captura, una mini demo o una nota que puedas reutilizar en portfolio.

Reflexión rápida

¿Qué cambiarías en tu forma de trabajar después de aplicar manejando multiples estados?

De lección a portfolio

Convertí esta lección en una prueba técnica visible.

Una app pequeña publicada, con README y decisiones explicadas, funciona mejor que una lista de tecnologías sueltas.

Paso 1

Creá una demo mínima que use el concepto de la lección.

Paso 2

Escribí un README corto con objetivo, stack, decisión técnica y mejora futura.

Paso 3

Publicá la demo y enlazala desde tu perfil profesional.

Newsletter Cursalo

Recibí rutas y cursos nuevos

Sumate para recibir recursos orientados a empleo y portfolio.

  • Rutas de empleo
  • Cursos prácticos
  • Portfolio y entrevistas

Sin spam. También podés entrar con tu cuenta para guardar progreso. Iniciá sesión