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

28 阅读1分钟
  • 使用React实现一个简单的待办事项列表:用户可以添加、编辑和删除待办事项

组件结构

创建三个组件TodoItemTodoListTodoForm来构建一个简单的Todo List应用:

  1. TodoItem.js: 表示一个单独的待办事项,负责显示待办事项的文本、处理编辑和删除操作。editingtext 状态用于控制编辑模式和文本输入
import React, { useState } from 'react';

const TodoItem = ({ todo, onDelete, onEdit }) => {
  const [editing, setEditing] = useState(false);
  const [text, setText] = useState(todo.text);

  const handleEditClick = () => {
    setEditing(true);
  };

  const handleSaveClick = () => {
    onEdit(text);
    setEditing(false);
  };

  return (
    <li>
      {editing ? (
        <>
          <input
            type="text"
            value={text}
            onChange={(e) => setText(e.target.value)}
          />
          <button onClick={handleSaveClick}>Save</button>
        </>
      ) : (
        <>
          <span>{todo.text}</span>
          <button onClick={handleEditClick}>Edit</button>
          <button onClick={onDelete}>Delete</button>
        </>
      )}
    </li>
  );
};

export default TodoItem;
  1. TodoList.js: 负责渲染待办事项列表,接收 todosonDeleteonEdit 作为属性,并遍历 todos 数组以呈现每个待办事项

image.png

  1. TodoForm.js: 负责添加新的待办事项,包含一个表单输入框,用户可以在其中输入新的待办事项文本,当用户提交表单时会调用传递给它的 onAdd 函数,将新的待办事项添加到列表中

image.png

主组件

主应用组件描述了整个应用的逻辑。在App.js中,初始化了一个空的 todos 状态数组用于存储待办事项,定义addTododeleteTodoeditTodo 函数,分别用于添加、删除和编辑待办事项:

image.png

在返回的JSX中渲染了一个标题,然后嵌入TodoFormTodoList组件,将这些组件与状态和操作连接起来。

样式

通过添加CSS或使用类似Bootstrap的样式库来美化应用

运行应用

在终端中运行npm start启动应用并在浏览器中打开,即构建出一个可以添加、删除和编辑事项的简单的Todo List