React

【React入門】Todoリストの作り方|サンプルを用いて解説!

こんにちは、テルプロです!

「ReactでTodoリストを作ってみたい」とお悩みではないでしょうか?

テルプロ

本記事ではそんな悩みを解決していきます!

本記事を読むことで
  1. Todoリストの作り方をサンプルで理解できる
  2. コードを公開しているので、自分の環境で確かめることができる

Reactを用いたTodoリストの作り方【サンプル】

事前準備

パッケージをインストール

今回使用するパッケージは以下の通りです。

 "dependencies": {
    "react": "18.0.0",
    "react-dom": "18.0.0",
    "react-scripts": "4.0.0",
    "uuid": "8.3.2"
 }

プロジェクト構成

今回実装するアプリの「リポジトリ構成」と「完成イメージ」は以下の通りです。

リポジトリ構成

完成イメージ

今回実装するTodoアプリは、上記の通りです。フォームから新しいタスクを入力し、ボタンをクリックすることで、Todoを追加・削除をすることができます。

では早速、こちらのアプリを作っていきましょう!

ソースコード

Index.js

import { StrictMode } from "react";
import { createRoot } from "react-dom/client";

import App from "./App";

const rootElement = document.getElementById("root");
const root = createRoot(rootElement);

root.render(
  <StrictMode>
    <App />
  </StrictMode>
);

App.js

import React from "react";
import { Todo } from "./commponents/Todo";

const App = () => {
  return (
    <div>
      <Todo />
    </div>
  );
};

export default App;

components/Todo.jsx

import React from "react";
import { useState } from "react";
import { v4 as uuidv4 } from "uuid";

export const Input = ({ createTodo }) => {
  // inputに入力された値のstateを管理
  const [value, setValue] = useState("");

  const addTodo = () => {
    // 未入力の場合、alertを表示させる
    if (value === "") {
      alert("Todoが入力されていません。");
      return;
    }
    // 新しいtodoオブジェクトを生成
    const newTodo = {
      id: uuidv4(),
      content: value
    };
    // createTodoの引数にnewTodoを渡す
    createTodo(newTodo);
    // inputの中身を空にする
    setValue("");
  };

  return (
    <div>
      <input
        type="text"
        placeholder="入力してね"
        value={value}
        // 入力された値をvalueに反映する
        onChange={(e) => setValue(e.target.value)}
      />
      <button onClick={addTodo}>+</button>
    </div>
  );
};

components/List.jsx

import React from "react";

export const List = ({ todos, deleteTodo }) => {
  return (
    <div>
      {/**受け取ったtodosをmapで回してtodoを取得する */}
      {todos.map((todo) => {
        return (
          <div key={todo.id}>
            <span>{todo.content} </span>
            {/**押したボタンのIDをdeleteTodoの引数に渡す */}
            <button onClick={() => deleteTodo(todo.id)}>-</button>
          </div>
        );
      })}
    </div>
  );
};

components/Item.jsx

import React from "react";

export const Item = ({ todo, deleteTodo }) => {
  return (
    <div>
      <div key={todo.id}>
        <span>{todo.content} </span>
        {/**押したボタンのIDをdeleteTodoの引数に渡す */}
        <button onClick={() => deleteTodo(todo.id)}>-</button>
      </div>
    </div>
  );
};

components/Input.jsx

import React from "react";
import { useState } from "react";
import { v4 as uuidv4 } from "uuid";

export const Input = ({ createTodo }) => {
  // inputに入力された値のstateを管理
  const [value, setValue] = useState("");

  const addTodo = () => {
    // 未入力の場合、alertを表示させる
    if (value === "") {
      alert("Todoが入力されていません。");
      return;
    }
    // 新しいtodoオブジェクトを生成
    const newTodo = {
      id: uuidv4(),
      content: value
    };
    // createTodoの引数にnewTodoを渡す
    createTodo(newTodo);
    // inputの中身を空にする
    setValue("");
  };

  return (
    <div>
      <input
        type="text"
        placeholder="入力してね"
        value={value}
        // 入力された値をvalueに反映する
        onChange={(e) => setValue(e.target.value)}
      />
      <button onClick={addTodo}>+</button>
    </div>
  );
};

大変お疲れ様でした!以上でアプリは完成です!

▼Todoリストを作成することで学べること

  1. コンポーネント分割の方法
  2. コンポーネント間でのstateの受け渡し方
  3. イベントリスナーの使い方
  4. map/filterメソッドの使い方

Todoリストの作成は、React開発の基礎の部分を押さえられるので初心者の方には非常におすすめです。上記のコードを参考に、ぜひ色々と試してみてください!

▼TS版もあるので興味がある方はぜひご覧ください。

まとめ

今回は「Reactを用いたTodoリストの作り方」を解説しました。

今回解説したTodoリストは、Reactの基礎を押さえられる内容となっています。分からないところがあれば、ドキュメントを確認してしっかりと押さえておきましょう。

Reactの実践的なスキルを身につけたい方には「Udemy」がおすすめです。オンラインコースの数は10万以上。世界で4000万人以上の人が学習に利用しています。

▼以下では、口コミをもとに厳選した「React学習におすすめのUdemy講座3選」をご紹介しています。ぜひ参考にしてみてください!

最後までご覧いただきありがとうございました。ではまた!

参考文献
ABOUT ME
テルプロ
東京都在住のアプリエンジニア。大学では、ソフトウェア開発の研究に取り組む。長期のエンジニアインターンシップを経て、実務スキルを磨き、現在はフリーランスエンジニアとしても活動中。メインはモバイルアプリ開発。IT関連の記事監修も行い、技術の共有と普及に励んでいます。 監修実績(レバテックフリーランス
\ 登録しておいて損なし!IT就活支援サービス /
1位:レバテックルーキー
レバテックルーキー」とは、新卒でITエンジニアを目指す学生の支援に特化した就職エージェントです。業界支持率NO.1の実績を誇っており、エージェント選びに悩む学生におすすめです。エンジニア業界を熟知したアドバイザーが担当します。面接対策だけでなく、学生の志向性やスキル、入社後のキャリアパスを考慮したアドバイスをしてくれる就職活動の強い味方となります。
おすすめ度
URLレバテックルーキーはこちら

 

2位:OfferBox
OfferBox」とは、企業が興味を持った学生にオファーする、新しい就活サイトです。学生は自分のプロフィールを登録しておくだけで、企業からオファーをもらえます。学生利用率No.1で就活生の3人に1人が利用しており、IT業界を志望する学生にもおすすめです。いわゆる一斉配信ができないため、企業はしっかりと学生のプロフィールを見て、オファーを送ってくるので安心です。
おすすめ度
URLオファー型就活アプリOfferBox

 

3位:GeekSalon
GeekSalon」とは、全国展開の大学生限定プログラミングスクールです。Web開発やアプリ開発など多様なコースを提供しています。お値段は他スクールの3分の1程度の料金で、大学生でも通いやすい値段設定です。専属メンターが全面的にサポートしてくれるため、未経験でも安心です。また、切磋琢磨できる同世代の仲間に出会えます。スクールを検討している大学生におすすめです。
おすすめ度
URL大学生限定コミュニティ「GeekSalon」