私の React の旅: 28 日目

DDD
リリース: 2025-01-03 20:28:40
オリジナル
887 人が閲覧しました

My React Journey: Day 28

React で To Do リストを作成する

今日、私は React プロジェクトに取り組み、シンプルかつ強力な To-Do リスト アプリを作成しました。このプロジェクトにより、React フック、状態管理、イベント処理についての理解が深まり、タスクを上下に移動するなどの追加機能で機能を強化することができました。

ここでは、私が学んだことと実践したことの内訳を示します。

1.コンポーネントのセットアップ
タスクを管理するために useState フックを使用するように ToDoList.jsx を構造化しました。これにより、タスク リストを動的に更新して表示できるようになりました。以下はタスクを管理するための基本的な設定です:

import React, { useState } from 'react';

export default function ToDoList() {
  const [tasks, setTasks] = useState([]);
  const [newTask, setNewTask] = useState("");

  function handleInputChange(event) {
    setNewTask(event.target.value); // Enables us to see what we type
  }

  function addTask() {
    if (newTask.trim() !== "") {
      setTasks(t => [...t, newTask]); // Adds the new task to the task list
      setNewTask(""); // Resets the input field
    }
  }
}
ログイン後にコピー

2.タスクの追加と削除
状態を操作してタスクを追加および削除する方法を学びました。 addTask 関数は入力を追加する前に入力が有効かどうかをチェックしますが、deleteTask はインデックスに基づいて特定のタスクを削除します:

function deleteTask(index) {
  const updatedTasks = tasks.filter((_, i) => i !== index); // Removes the task at the given index
  setTasks(updatedTasks);
}
ログイン後にコピー

3.タスクを上下に移動する
プロジェクトの主な機能強化は、タスクの並べ替えを実装することでした。 moveTaskUp 関数と moveTaskDown 関数は、インデックスに基づいてタスクを並べ替えます。

function moveTaskUp(index) {
  if (index > 0) {
    const updatedTasks = [...tasks];
    [updatedTasks[index], updatedTasks[index - 1]] = [updatedTasks[index - 1], updatedTasks[index]];
    setTasks(updatedTasks);
  }
}

function moveTaskDown(index) {
  if (index < tasks.length - 1) {
    const updatedTasks = [...tasks];
    [updatedTasks[index], updatedTasks[index + 1]] = [updatedTasks[index + 1], updatedTasks[index]];
    setTasks(updatedTasks);
  }
}
ログイン後にコピー

4. CSS でスタイルを追加する
アプリを視覚的に魅力的なものにするために、index.css でカスタム スタイルを適用しました。以下にハイライトをいくつか示します:

ボタンのスタイル:

button {
  font-size: 1.7rem;
  font-weight: bold;
  padding: 10px 20px;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  transition: background-color 0.5s ease;
}
.add-button {
  background-color: hsl(125, 47%, 54%);
}
.add-button:hover {
  background-color: hsl(125, 47%, 44%);
}
ログイン後にコピー

タスク項目のスタイル:

li {
  font-size: 2rem;
  font-weight: bold;
  padding: 15px;
  background-color: hsl(0, 0%, 97%);
  margin-bottom: 10px;
  border: 3px solid hsla(0, 0%, 85%, 0.75);
  border-radius: 5px;
  display: flex;
  align-items: center;
}
ログイン後にコピー

5. To Do リストを実行中
ToDoList.jsx コンポーネントですべてがどのようにまとめられるかを次に示します:

return (
  <div className='to-do-list'>
    <h1>To-Do List</h1>
    <div>
      <input 
        type='text'
        placeholder='Enter a task...'
        value={newTask}
        onChange={handleInputChange}
      />
      <button className='add-button' onClick={addTask}>
        Add
      </button>
    </div>

    <ol>
      {tasks.map((task, index) => (
        <li key={index}>
          <span className='text'>{task}</span>
          <button className='delete-button' onClick={() => deleteTask(index)}>Delete</button>
          <button className='move-button' onClick={() => moveTaskUp(index)}>☝️</button>
          <button className='move-button' onClick={() => moveTaskDown(index)}>?</button>
        </li>
      ))}
    </ol>
  </div>
);
ログイン後にコピー

重要なポイント

  1. React フック: useState フックは、ローカル コンポーネントの状態を管理する効率的な方法です。
  2. イベント処理: handleInputChange、addTask、deleteTask などの関数は、ユーザー インタラクションによって UI がどのように更新されるかを示します。
  3. 動的リスト レンダリング: マップを使用してタスクを反復処理すると、アプリが動的になり、変更に対応できるようになります。
  4. スタイリングのベスト プラクティス: CSS ホバー効果とトランジションを組み合わせると、ユーザー エクスペリエンスが向上します。

一歩ずつ

ソースコード
このプロジェクトの完全なソース コードには GitHub でアクセスできます:
? To-Do リスト React アプリ リポジトリ

自由に探索、フォーク、プロジェクトに貢献してください!

以上が私の React の旅: 28 日目の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート