0-Gestión de estado en una aplicación de tareas
useState en React: El Corazón de Nuestra App de Tareas
En este post, vamos a analizar dos líneas fundamentales de código en nuestra aplicación de tareas (Todo App) en React y cómo impactan en toda la funcionalidad de la aplicación:
const [title, setTitle] = useState("");
const [todos, setTodos] = useState([]);¿Qué hace este código?
Estas dos líneas utilizan el hook useState de React para crear dos variables de estado:
title: Almacena el texto de la nueva tarea que el usuario está escribiendotodos: Almacena el array de todas las tareas creadas
Cada una tiene su función actualizadora correspondiente: setTitle y setTodos.
¿Cómo se utilizan en la aplicación?
1. title y setTitle en acción
Función handleInputChange:
function handleInputChange(e) {
setTitle(e.target.value); // Actualiza title con cada tecla presionada
}Cada vez que escribes en el input, esta función captura el valor y actualiza
titleEl input está conectado a este estado:
<input value={title} onChange={handleInputChange} />
Función handleSubmit:
function handleSubmit(e) {
e.preventDefault();
// ...crear nueva tarea...
setTitle(""); // ¡Limpia el input después de agregar!
}2. todos y setTodos - El núcleo de nuestra app
Función handleSubmit (crear tarea):
const updatedTodos = [...todos];
updatedTodos.unshift(newTodo);
setTodos(updatedTodos); // Actualiza la lista de tareasFunción handleDelete (eliminar tarea):
function handleDelete(id) {
const filteredTodos = todos.filter(item => item.id !== id);
setTodos([...filteredTodos]); // Actualiza la lista sin el elemento eliminado
}Función handleUpdate (editar texto):
function handleUpdate(id, value) {
const temp = [...todos];
const item = temp.find(item => item.id === id);
item.title = value;
setTodos([...temp]); // Actualiza la lista con el texto modificado
}Función handleCheckboxChange (marcar completado):
function handleCheckboxChange(id, status) {
const temp = [...todos];
const item = temp.find(item => item.id === id);
item.completed = status;
setTodos([...temp]); // Actualiza el estado 'completed'
}¿Por qué es importante este patrón?
Reactividad: Cada vez que usamos
setTitleosetTodos, React automáticamente re-renderiza el componente con los nuevos valoresSincronización UI-Estado: La interfaz siempre refleja el estado actual:
{todos.map(item => <Todo key={item.id} item={item} />)}Flujo unidireccional: Los datos fluyen en una sola dirección:
Estado → UI → Eventos → Actualización estado → (ciclo se repite)
Conclusión
Estas dos líneas de código son el cerebro de nuestra aplicación:
titleysetTitlegestionan la interacción inmediata con el usuariotodosysetTodosson la fuente de verdad para todas las operaciones CRUD
El poder de useState está en cómo nos permite gestionar el estado de forma declarativa, manteniendo nuestra UI siempre sincronizada con nuestros datos.
¿Te quedó claro cómo funciona el estado en React? ¡Déjame tus preguntas en los comentarios
Comentarios
Publicar un comentario