← クエスト一覧
クエスト10:Todo アプリを作ろう!
スライド
1
/
1
とばして問題へ
💻 コード例
実行結果
← 戻る
次へ →
クエストを始める
← クエスト一覧
⚛️ React基礎
/
Quest 10
/ 10
クエスト10:Todo アプリを作ろう!
発展
+10 XP
📖 説明を見る
🏠
📖 課題
💻 コード
結果
今回の課題
テキスト入力で Todo を追加・完了チェック・削除できる Todo アプリを完成させよう!
📖 解説を見る
🏆 React 総合問題
useState・イベント・リストレンダリング・条件レンダリングを組み合わせて Todo アプリを完成させよう!
ヒントを見る
addTodo: setTodos([...todos, {id: Date.now(), text: input, done: false}]) / toggleTodo: setTodos(todos.map(...)) / deleteTodo: setTodos(todos.filter(...))
🤖 AIに聞く
📄 見本
答えを見る
「答えを見る」を押すと、お手本のプレビューとコードが出ます。
💻 コードエディタ
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>React</title> <script src="https://unpkg.com/react@18/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> <style>li { margin: 8px 0; }</style> </head> <body> <div id="root"></div> <script type="text/babel"> const { useState } = React; function TodoApp() { const [todos, setTodos] = useState([ { id: 1, text: 'React を学ぶ', done: false }, ]); const [input, setInput] = useState(''); function addTodo() { if (!input.trim()) return; // ここに追加処理を書こう setInput(''); } function toggleTodo(id) { // ここに完了トグル処理を書こう } function deleteTodo(id) { // ここに削除処理を書こう } return ( <div> <h2>Todo リスト</h2> <input value={input} onChange={(e) => setInput(e.target.value)} placeholder="やること" /> <button onClick={addTodo}>追加</button> <ul> {todos.map(todo => ( <li key={todo.id}> <input type="checkbox" checked={todo.done} onChange={() => toggleTodo(todo.id)} /> <span style={{ textDecoration: todo.done ? 'line-through' : 'none' }}> {todo.text} </span> <button onClick={() => deleteTodo(todo.id)}>削除</button> </li> ))} </ul> </div> ); } const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<TodoApp />); </script> </body> </html>
コードを実行
さいしょから
あなたの出力
正解! +10 XP
正解!見本と同じになりました。
練習問題へ進む →
クリアをXでシェア
ヒント
実行する
次へ →
🏠 ホームへ
れんしゅうもんだい
☑ 0 / 0 正解
レッスンに戻る
全問正解でクエストクリア!
🏆
React基礎コース 完全制覇!
全クエストをクリアしました!すごい!
🗺️ クエスト一覧へ
Xでシェア
コピーしました!
×
先にヒントを見ますか?
ヒントを読むと、自分の力で解けるかもしれません。
ヒントを見る
それでも答えを見る