React.js 初心者ガイド: まずは簡単な TODO リストを作ってみよう

AI、データサイエンス

React.js を学び始める際に、最初に取り組むのにちょうど良いプロジェクトとして「TODO リストアプリの作成」があります。このシンプルなアプリは、React.js の基本的な使い方を身につけるために最適です。本記事では、React.js を使った TODO リストアプリの作成手順と、各コードの解説を行います。なお、筆者の環境は macOS です。

プロジェクトの準備

まずは、React.js のプロジェクト環境をローカルにセットアップしましょう。Node.js がインストールされていない場合は、Node.js 公式サイトからダウンロードしてインストールしてください。

Node.js と React.js のインストール確認方法

1. Node.js の確認
ターミナルを開き、以下のコマンドを実行します。

       node -v

    バージョン番号が表示されれば、Node.js がインストールされています。

    2. npm(Node Package Manager)の確認
    Node.js のインストールにより、npm も一緒にインストールされます。以下のコマンドで確認できます。

         npm -v

      3. npx の確認
      npxnpm の一部であり、プロジェクト作成時に使います。以下で確認できます。

           npx -v

        Node.js や npm のバージョンが表示されれば準備完了です。エラーが表示される場合は、インストールが必要です。

        プロジェクトの作成手順

        1. ターミナルで作業したいディレクトリに移動し、以下のコマンドを入力して新規プロジェクトを作成します。

             npx create-react-app todo-app

          2. todo-app ディレクトリに移動して、React アプリを起動します。

               cd todo-app
               npm start

            ブラウザに自動で http://localhost:3000 が開き、React の初期画面が表示されれば、セットアップ完了です。

            TODO リストアプリのコード

            次に、アプリケーションのコードを App.js に追加していきます。このコードでは、タスクをリストに追加し、完了や削除の操作ができるシンプルな TODO リストを構築します。

            App.js のコード

            以下のコードを src/App.js ファイルに貼り付けてください。

            import React, { useState } from 'react';
            
            function App() {
              const [tasks, setTasks] = useState([]);
              const [task, setTask] = useState('');
            
              const addTask = () => {
                if (task.trim()) {
                  setTasks([...tasks, { text: task, completed: false }]);
                  setTask('');
                }
              };
            
              const toggleComplete = (index) => {
                const newTasks = [...tasks];
                newTasks[index].completed = !newTasks[index].completed;
                setTasks(newTasks);
              };
            
              const deleteTask = (index) => {
                setTasks(tasks.filter((_, i) => i !== index));
              };
            
              return (
                <div style={{ padding: '20px' }}>
                  <h1>ToDo List</h1>
                  <input
                    type="text"
                    value={task}
                    onChange={(e) => setTask(e.target.value)}
                    placeholder="New task"
                  />
                  <button onClick={addTask}>Add</button>
                  <ul>
                    {tasks.map((task, index) => (
                      <li key={index} style={{ textDecoration: task.completed ? 'line-through' : 'none' }}>
                        {task.text}
                        <button onClick={() => toggleComplete(index)}>
                          {task.completed ? 'Undo' : 'Complete'}
                        </button>
                        <button onClick={() => deleteTask(index)}>Delete</button>
                      </li>
                    ))}
                  </ul>
                </div>
              );
            }
            
            export default App;

            コードの詳細解説

            a. 状態管理 (useState)

            • useState フックを使用して tasks(タスクのリスト)と task(新しいタスクの入力値)を管理します。tasks は配列で、各タスクはオブジェクト形式で格納され、completed というプロパティを持つことで完了状態を管理します。

            b. タスクの追加 (addTask 関数)

            • addTask 関数は、現在の task 状態が空でない場合にのみタスクを tasks 配列に追加します。setTask('') によって入力フィールドもリセットされます。

            c. タスクの完了状態を切り替える (toggleComplete 関数)

            • toggleComplete 関数は指定したタスクの完了状態を反転させる関数です。completed プロパティを true または false に切り替えることで、タスクの完了状態を管理しています。

            d. タスクの削除 (deleteTask 関数)

            • deleteTask 関数は filter メソッドを使い、指定したインデックスのタスクを tasks 配列から削除します。

            アプリの実行と確認

            コードを保存したら、ターミナルで以下のコマンドを実行し、アプリを起動します。

            npm start

            http://localhost:3000 にアクセスし、TODO リストアプリが表示されれば成功です。新しいタスクを追加、完了、削除して、各機能が動作するか確認してみましょう。

            まとめ

            この TODO リストアプリの作成を通して、React.js の基礎的なコンポーネント構造や状態管理の方法について学びました。React は JavaScript の基本文法を活かしつつ、コンポーネントを組み合わせて機能を拡張できるため、シンプルなアプリから学習を始めると理解が進みやすいです。これを機に、さらに複雑なアプリケーションにも挑戦してみましょう!

            コメント

            タイトルとURLをコピーしました