使用React实现一个简单的待办事项列表| 青训营

60 阅读2分钟

一个简单的待办事项

使用React实现一个简单的待办事项列表,我们可以使用函数组件和React的状态管理来实现。

首先,我们需要创建一个新的React应用并安装所需的依赖项。在终端中运行以下命令:


npx create-react-app todo-list-app
cd todo-list-app
npm install

然后,我们在src目录下创建一个名为TodoList.js的新文件,并在其中编写以下代码:


import React, { useState } from 'react';

function TodoList() {
  const [todos, setTodos] = useState([]); // 创建状态 todos

  // 添加待办事项
  const addTodo = (event) => {
    event.preventDefault();
    const todoText = event.target.todoText.value;
    if (todoText.trim() !== '') {
      const newTodo = {
        id: Date.now(),
        text: todoText,
      };
      setTodos([...todos, newTodo]);
      event.target.reset();
    }
  };

  // 编辑待办事项
  const editTodo = (id, newText) => {
    const updatedTodos = todos.map((todo) => {
      if (todo.id === id) {
        return {
          ...todo,
          text: newText,
        };
      }
      return todo;
    });
    setTodos(updatedTodos);
  };

  // 删除待办事项
  const deleteTodo = (id) => {
    const updatedTodos = todos.filter((todo) => todo.id !== id);
    setTodos(updatedTodos);
  };

  return (
    <div>
      <h1>Todo List</h1>
      <form onSubmit={addTodo}>
        <input type="text" name="todoText" placeholder="Add a new todo..." />
        <button type="submit">Add</button>
      </form>
      <ul>
        {todos.map((todo) => (
          <li key={todo.id}>
            <input
              type="text"
              defaultValue={todo.text}
              onChange={(event) => editTodo(todo.id, event.target.value)}
            />
            <button onClick={() => deleteTodo(todo.id)}>Delete</button>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default TodoList;

在上面的代码中,我们首先引入了React和useState钩子函数。然后,我们创建了一个名为TodoList的函数组件,并使用useState创建了一个名为todos的状态和一个名为setTodos的函数来更新todos状态。

在组件中,我们定义了三个函数:addTodo用于添加新的待办事项,editTodo用于编辑待办事项,deleteTodo用于删除待办事项。这些函数使用setTodos来更新todos状态。

在return语句中,我们渲染了一个表单,用户可以在输入框中输入新的待办事项,并通过点击“Add”按钮来提交。待办事项列表使用一个无序列表来展示,其中每个待办事项都有一个输入框和一个“Delete”按钮。

在输入框中,我们使用了defaultValue属性来设置输入框的初始值,并通过onChange事件监听输入框的变化,并调用editTodo函数来更新对应的待办事项。

我们将TodoList组件导出,并在src目录下的index.js文件中进行导入和渲染。


import React from 'react';
import ReactDOM from 'react-dom';
import TodoList from './TodoList';

ReactDOM.render(<TodoList />, document.getElementById('root'));

最后,在终端中运行npm start来启动应用程序,并在浏览器中打开http://localhost:3000,你将看到一个简单的待办事项列表应用。你可以输入新的待办事项,编辑事项的文本,并删除不需要的事项。

使用React可以更加方便地管理组件的状态和交互,并且提供了更好的组织和可维护性。你可以根据需要对上述代码进行扩展和定制,以创建更复杂和功能强大的待办事项列表应用。