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:

jsx
Copy
Download
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:

  1. map(): Es el método ideal para transformar arrays en React. Recorre cada elemento del array todos.

  2. key prop: Es importante incluir la prop key con un valor único (usamos todo.id) para ayudar a React a identificar qué elementos han cambiado.

  3. 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:

jsx
Copy
Download
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:

  1. Componente separado para cada Todo:

    jsx
    Copy
    Download
    function TodoItem({ todo }) {
      return <li className="todoItem">{todo.title}</li>;
    }
    
    // Luego en el map:
    {todos.map((todo) => <TodoItem key={todo.id} todo={todo} />)}
  2. Mostrar estado de completado:

    jsx
    Copy
    Download
    <li style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
      {todo.title}
    </li>
  3. Agregar botones para acciones:

    jsx
    Copy
    Download
    <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

Entradas más populares de este blog

1-Sistema de Tareas en React

0-Gestión de estado en una aplicación de tareas

2-Agregar una Tarea a tu Lista de Tareas en React