Back to blocks
Todo List App
enproductivityreacttodolist
Prompt
Create a todo list app
Résultat Généré
import React, { useState } from 'react'; export default function App() { const [todos, setTodos] = useState([]); const [input, setInput] = useState(''); const [filter, setFilter] = useState('all'); const addTodo = () => { if (input.trim() === '') return; setTodos([...todos, { id: Date.now(), text: input, completed: false }]); setInput(''); }; const toggleTodo = (id) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo)); }; const deleteTodo = (id) => { setTodos(todos.filter(todo => todo.id !== id)); }; const filteredTodos = todos.filter(todo => { if (filter === 'active') return !todo.completed; if (filter === 'completed') return todo.completed; return true; }); return ( <div className="container"> <header> <h1>My Todo List</h1> <p>Stay organized and get things done!</p> </header> <div className="input-section"> <input type="text" value={input} onChange={(e) => setInput(e.target.value)} placeholder="Add a new task..." onKeyDown={(e) => e.key === 'Enter' && addTodo()} /> <button onClick={addTodo}>Add</button> </div> <div className="filter-buttons"> <button className={filter === 'all' ? 'active' : ''} onClick={() => setFilter('all')}>All</button> <button className={filter === 'active' ? 'active' : ''} onClick={() => setFilter('active')}>Active</button> <button className={filter === 'completed' ? 'active' : ''} onClick={() => setFilter('completed')}>Completed</button> </div> <ul className="todo-list"> {filteredTodos.length === 0 && <li className="empty">No tasks yet. Add one!</li>} {filteredTodos.map(todo => ( <li key={todo.id} className={todo.completed ? 'completed' : ''}> <input type="checkbox" checked={todo.completed} onChange={() => toggleTodo(todo.id)} /> <span>{todo.text}</span> <button className="delete" onClick={() => deleteTodo(todo.id)}>×</button> </li> ))} </ul> <footer> <p>{todos.filter(t => !t.completed).length} tasks remaining</p> </footer> </div> ); }
