React是一个用于构建用户界面的JavaScript库。它通过组件化的方式将页面拆分成独立的、可复用的部分,使得开发者可以更有效地管理和维护复杂的UI。
在待办事项列表的实现中,使用了React函数式组件和React Hooks来管理状态和处理用户交互。以下是代码的解释:
- 首先,我们引入了React库,并从
react模块中导入了useState钩子。useState钩子允许我们在函数组件中定义状态变量。 - 接下来,定义了一个名为
TodoList的函数组件。这个组件包含了待办事项列表的整体结构和逻辑。 - 在组件内部,使用
useState钩子创建了两个状态变量:todos和inputValue。todos用于存储待办事项的数组,inputValue用于存储用户在输入框中输入的文本。 - 在页面渲染部分,使用JSX语法编写了待办事项列表的HTML结构。其中包括一个标题、一个输入框、一个添加按钮和一个待办事项的列表。
- 输入框和按钮都绑定了相应的事件处理函数。输入框的值通过
value属性与inputValue状态变量进行绑定,当输入框的值发生变化时,会触发onChange事件处理函数来更新inputValue的值。 - 添加按钮绑定了
addTodo事件处理函数,当按钮被点击时,会调用addTodo来将新的待办事项添加到todos数组中。 - 待办事项列表通过
todos.map方法遍历todos数组,并为每个待办事项渲染一个li元素。每个li元素包含一个输入框和一个删除按钮。 - 输入框绑定了
editTodo事件处理函数,当输入框的值发生变化时,会调用editTodo来更新相应待办事项的文本。 - 删除按钮绑定了
deleteTodo事件处理函数,当按钮被点击时,会调用deleteTodo来从todos数组中移除相应的待办事项。 - 最后,通过
export default将TodoList组件导出,使得其他组件可以引入和使用该组件。
以上就可以实现一个简单的待办事项列表功能。用户可以在输入框中添加新的待办事项,编辑已有的待办事项文本,并通过删除按钮删除待办事项。所有的操作都会在界面上实时更新。
import React, { useState } from 'react';
function TodoList() { const [todos, setTodos] = useState([]); const [inputValue, setInputValue] = useState('');
// 添加待办事项 const addTodo = () => { if (inputValue.trim() !== '') { const newTodo = { id: Date.now(), text: inputValue }; setTodos(prevTodos => [...prevTodos, newTodo]); setInputValue(''); } };
// 编辑待办事项 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 (
Todo List
<input type="text" value={inputValue} onChange={e => setInputValue(e.target.value)} placeholder="Enter a new todo..." /> Add-
{todos.map(todo => (
- <input type="text" value={todo.text} onChange={e => editTodo(todo.id, e.target.value)} /> <button onClick={() => deleteTodo(todo.id)}>Delete ))}
export default TodoList;