Back to blocks
Simple Todo List App
enUtilitytodoreactlist
Prompt
Create a simple todo list app with React
Résultat Généré
import React, { useState } from 'react'; import './App.css'; export default function App() { const [tasks, setTasks] = useState([]); const [input, setInput] = useState(''); const addTask = () => { if (input.trim() === '') return; const newTask = { id: Date.now(), text: input, completed: false }; setTasks([...tasks, newTask]); setInput(''); }; const toggleTask = (id) => { setTasks(tasks.map(task => task.id === id ? { ...task, completed: !task.completed } : task )); }; const deleteTask = (id) => { setTasks(tasks.filter(task => task.id !== id)); }; const handleKeyDown = (e) => { if (e.key === 'Enter') addTask(); }; return ( <div className="app"> <h1>📝 Todo List</h1> <div className="input-container"> <input type="text" placeholder="Add a new task..." value={input} onChange={(e) => setInput(e.target.value)} onKeyDown={handleKeyDown} /> <button onClick={addTask}>Add</button> </div> <ul className="task-list"> {tasks.map(task => ( <li key={task.id} className={`task-item ${task.completed ? 'completed' : ''}`}> <input type="checkbox" checked={task.completed} onChange={() => toggleTask(task.id)} /> <span>{task.text}</span> <button className="delete-btn" onClick={() => deleteTask(task.id)}>✕</button> </li> ))} </ul> <p className="footer">{tasks.length} task{tasks.length !== 1 ? 's' : ''} remaining</p> </div> ); }
