01- Explicación para Mostrar los Todos en React
Explicación para Mostrar los Todos en React
Para mostrar los elementos todos de manera sencilla en tu aplicación React, puedes usar el método map() para iterar sobre el array y renderizar cada tarea. Aquí te explico cómo hacerlo:
Solución básica para mostrar los todos:
return (
<div className="todoContainer">
<form onSubmit={handleSubmit} className="todoCreateForm">
<input
className="todoInput"
value={title}
onChange={handleInputChange}
placeholder="Escribe una nueva tarea"
/>
<button type="submit">Add</button>
</form>
{/* Mostrar todos los elementos */}
<ul className="todoList">
{todos.map((todo) => (
<li key={todo.id} className="todoItem">
{todo.title}
</li>
))}
</ul>
</div>
);Explicación:
map(): Es el método ideal para transformar arrays en React. Recorre cada elemento del arraytodos.keyprop: Es importante incluir la propkeycon un valor único (usamostodo.id) para ayudar a React a identificar qué elementos han cambiado.Estructura básica: Creamos una lista no ordenada (
<ul>) con cada todo como un elemento de lista (<li>).
Versión mejorada con estilos básicos:
return (
<div className="todoContainer" style={{ maxWidth: '500px', margin: '0 auto' }}>
<form onSubmit={handleSubmit} style={{ display: 'flex', marginBottom: '20px' }}>
<input
style={{ flex: 1, padding: '8px' }}
value={title}
onChange={handleInputChange}
placeholder="Escribe una nueva tarea"
/>
<button type="submit" style={{ padding: '8px 16px' }}>Add</button>
</form>
<ul style={{ listStyle: 'none', padding: 0 }}>
{todos.map((todo) => (
<li
key={todo.id}
style={{
padding: '8px',
margin: '4px 0',
background: '#f0f0f0',
borderRadius: '4px'
}}
>
{todo.title}
</li>
))}
</ul>
</div>
);Posibles mejoras adicionales:
Componente separado para cada Todo:
function TodoItem({ todo }) { return <li className="todoItem">{todo.title}</li>; } // Luego en el map: {todos.map((todo) => <TodoItem key={todo.id} todo={todo} />)}Mostrar estado de completado:
<li style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}> {todo.title} </li>Agregar botones para acciones:
<li> {todo.title} <button onClick={() => {/* completar todo */}}>✓</button> <button onClick={() => {/* eliminar todo */}}>✗</button> </li>
Recuerda que este es el enfoque más básico. A medida que avances en React, podrás implementar características más complejas como filtrado, edición, persistencia, etc
¿Qué hace este código?
Reactividad: Cada vez que usamos setTitle o setTodos, React automáticamente re-renderiza el componente con los nuevos valores
Sincronización UI-Estado: La interfaz siempre refleja el estado actual:
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á escribiendo
todos: Almacena el array de todas las tareas creadas
Flujo unidireccional: Los datos fluyen en una sola dirección:
Estado → UI → Eventos → Actualización estado → (ciclo se repite)
El poder de useState está en cómo nos permite gestionar el estado de forma declarativa, manteniendo nuestra UI siempre sincronizada con nuestros datos.
Comentarios
Publicar un comentario