Actualizando estado correctamente

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

Entender actualizando estado correctamente y conectarlo con una acción concreta dentro de Estado con useState.

Puntos de control
  • Patrones de actualizacion de estado
  • Actualizacion basada en valor anterior
  • Actualizando objetos
  • Actualizando arrays

Patrones de actualizacion de estado

Actualizacion basada en valor anterior

function Contador() {
  const [count, setCount] = useState(0);

  // MAL - puede fallar con multiples clicks rapidos
  const incrementarMal = () => {
    setCount(count + 1);
  };

  // BIEN - usa el valor anterior
  const incrementarBien = () => {
    setCount(prev => prev + 1);
  };

  // Incrementar 3 veces
  const incrementar3 = () => {
    setCount(prev => prev + 1);
    setCount(prev => prev + 1);
    setCount(prev => prev + 1);
  };

  return (
    <button
      Count: {count}
    </button>
  );
}

Actualizando objetos

function Formulario() {
  const [form, setForm] = useState({
    nombre: '',
    email: '',
    edad: 0
  });

  // MAL - muta el estado
  const handleChangeMal = (e) => {
    form.nombre = e.target.value; // NO!
  };

  // BIEN - crea nuevo objeto
  const handleChange = (e) => {
    setForm({
      ...form,  // copia propiedades existentes
      [e.target.name]: e.target.value  // actualiza una
    });
  };

  return (
    <form>
      <input
        name="nombre"
        value={form.nombre}
       
      />
      <input
        name="email"
        value={form.email}
       
      />
    </form>
  );
}

Actualizando arrays

function ListaTareas() {
  const [tareas, setTareas] = useState(['Estudiar', 'Ejercicio']);

  // Agregar
  const agregar = (tarea) => {
    setTareas([...tareas, tarea]);
  };

  // Eliminar
  const eliminar = (index) => {
    setTareas(tareas.filter((_, i) => i !== index));
  };

  // Actualizar uno
  const actualizar = (index, nuevoValor) => {
    setTareas(tareas.map((t, i) =>
      i === index ? nuevoValor : t
    ));
  };

  return (
    <ul>
      {tareas.map((tarea, i) => (
        <li key={i}>
          {tarea}
          <button => eliminar(i)}>X</button>
        </li>
      ))}
    </ul>
  );
}

Estado con objetos anidados

const [user, setUser] = useState({
  nombre: 'Maria',
  direccion: {
    ciudad: 'Madrid',
    codigo: '28001'
  }
});

// Actualizar propiedad anidada
const cambiarCiudad = (ciudad) => {
  setUser({
    ...user,
    direccion: {
      ...user.direccion,
      ciudad: ciudad
    }
  });
};
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 actualizando estado correctamente?

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