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

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

当我们谈论React时,我们谈论的是一个用于构建用户界面的JavaScript库。在这个例子中,我将演示如何使用React来创建一个简单的待办事项列表应用。我将从头开始创建这个应用,涵盖每个步骤,包括组件的创建、状态管理、事件处理以及最终的待办事项操作。

步骤1:

设置环境 确保你的开发环境中已安装Node.js和npm(Node.js包管理器)。Node.js用于运行React应用,而npm用于安装和管理项目依赖项。你可以从官方网站 nodejs.org/ 下载并安装它们。

步骤2:

创建React应用 在终端中,使用以下命令创建一个新的React应用。这个命令会使用Create React App工具创建一个项目骨架,并安装所需的依赖项。

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

步骤3:

首先,我们需要创建一个用于表示单个待办事项的React组件。在src文件夹中,创建一个名为TodoItem.js的文件,然后将以下代码添加到该文件中:

 import React from 'react';
 ​
 const TodoItem = ({ todo, onEdit, onDelete }) => {
   return (
     <div className="todo-item">
       <span>{todo.text}</span>
       <button onClick={() => onEdit(todo.id)}>编辑</button>
       <button onClick={() => onDelete(todo.id)}>删除</button>
     </div>
   );
 };
 ​
 export default TodoItem;

这个组件接受三个属性:todo表示待办事项的数据,onEditonDelete分别是编辑和删除按钮的点击处理函数。组件渲染待办事项的文本和两个按钮。

步骤4:

接下来,我们需要创建一个用于表示待办事项列表的React组件。在src文件夹中,创建一个名为TodoList.js的文件,然后将以下代码添加到该文件中:

 import React from 'react';
 import TodoItem from './TodoItem';
 ​
 const TodoList = ({ todos, onEdit, onDelete }) => {
   return (
     <div className="todo-list">
       {todos.map(todo => (
         <TodoItem key={todo.id} todo={todo} onEdit={onEdit} onDelete={onDelete} />
       ))}
     </div>
   );
 };
 ​
 export default TodoList;

这个组件接受三个属性:todos表示待办事项的数组,onEditonDelete分别是编辑和删除按钮的点击处理函数。组件通过map函数遍历todos数组,为每个待办事项创建一个TodoItem组件,并将其传递给TodoItem组件。

步骤5:

现在,我们将创建应用的主组件,它将包含整个待办事项应用的逻辑。打开src/App.js文件,然后将以下代码替换到该文件中:

 import React, { useState } from 'react';
 import TodoList from './TodoList';
 ​
 const App = () => {
   const [todos, setTodos] = useState([]);
   const [editingTodoId, setEditingTodoId] = useState(null);
 ​
   const addTodo = text => {
     const newTodo = { id: Date.now(), text };
     setTodos([...todos, newTodo]);
   };
 ​
   const editTodo = (id, newText) => {
     const updatedTodos = todos.map(todo =>
       todo.id === id ? { ...todo, text: newText } : todo
     );
     setTodos(updatedTodos);
     setEditingTodoId(null);
   };
 ​
   const deleteTodo = id => {
     const updatedTodos = todos.filter(todo => todo.id !== id);
     setTodos(updatedTodos);
   };
 ​
   return (
     <div className="app">
       <h1>待办事项列表</h1>
       <input
         type="text"
         placeholder="添加新的待办事项"
         onKeyDown={event => {
           if (event.key === 'Enter' && event.target.value.trim() !== '') {
             addTodo(event.target.value);
             event.target.value = '';
           }
         }}
       />
       <TodoList todos={todos} onEdit={setEditingTodoId} onDelete={deleteTodo} />
       {editingTodoId !== null && (
         <div className="edit-form">
           <input
             type="text"
             defaultValue={todos.find(todo => todo.id === editingTodoId).text}
             onKeyDown={event => {
               if (event.key === 'Enter' && event.target.value.trim() !== '') {
                 editTodo(editingTodoId, event.target.value);
               }
             }}
           />
         </div>
       )}
     </div>
   );
 };
 ​
 export default App;

在这个主组件中,我们使用了useState来管理应用的状态。主要的状态包括待办事项列表(todos),新待办事项文本(newTodo),以及当前正在编辑的待办事项的ID(editingTodoId)。 组件的addTodo函数用于添加新待办事项。它检查输入的文本是否为空,然后创建一个新的待办事项对象,将其添加到todos数组中,并清空输入框。 editTodo函数用于编辑待办事项。它接受待办事项的ID和新的文本作为参数,然后更新相应的待办事项。 deleteTodo函数用于删除待办事项。它接受待办事项的ID作为参数,并过滤掉具有相同ID的待办事项,从而实现删除操作。

步骤6:

我们需要为应用添加一些基本的样式,使其看起来更加美观和用户友好。在src文件夹中,创建一个名为App.css的文件,并添加以下样式:

 body {
   font-family: Arial, sans-serif;
 }
 ​
 .app {
   text-align: center;
   margin: 20px;
 }
 ​
 .todo-item {
   display: flex;
   align-items: center;
   margin: 5px 0;
 }
 ​
 button {
   margin-left: 5px;
 }

步骤7:

现在,我们可以在终端中运行应用:

 npm start

浏览器将会自动打开,并加载你的待办事项列表应用。你应该能够添加、编辑和删除待办事项,看到实时的更新。

总结:

通过这个更详细和深入的步骤,大家应该已经了解了如何使用React来创建一个简单的待办事项列表应用。我们涵盖了创建组件、处理状态、事件处理、样式等方面的内容。这个例子可以帮助你建立起对React应用构建的基本理解,你可以基于这个例子继续学习和扩展,添加更多的功能和优化。React的强大之处在于它的灵活性和可扩展性,可以帮助你构建出各种规模和类型的应用。

全部评论

相关推荐

11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务