使用React 实现一个简单的待办事项列表:用户可以添加、编辑和删除待办事项| 青训营

96 阅读4分钟
import React, { useState } from 'react';

const TodoList = () => {

  const [todos, setTodos] = useState([]);

  const [inputValue, setInputValue] = useState('');

  const [editIndex, setEditIndex] = useState(-1);

  const addTodo = () => {

    if (inputValue.trim() !== '') {

      setTodos([...todos, inputValue]);

      setInputValue('');

    }

  };

  const editTodo = (index, newValue) => {

    const updatedTodos = [...todos];

    updatedTodos[index] = newValue;

    setTodos(updatedTodos);

    setEditIndex(-1);

  }; 

  const deleteTodo = (index) => {

    const filteredTodos = todos.filter((_, i) => i !== index);

    setTodos(filteredTodos);

  };


  return (

    <div>

      <h1>Todo List</h1>

      <input

        type="text"

        value={inputValue}

        onChange={(e) => setInputValue(e.target.value)}

      />

      <button onClick={addTodo}>Add</button>

      <ul>

        {todos.map((todo, index) => (

          <li key={index}>

            {editIndex === index ? (

              <input

                type="text"

                value={todo}

                onChange={(e) => editTodo(index, e.target.value)}

              />

            ) : (

              <span>{todo}</span>

            )}

            <button onClick={() => deleteTodo(index)}>Delete</button>

            {editIndex !== index ? (

              <button onClick={() => setEditIndex(index)}>Edit</button>

            ) : (

              <button onClick={() => setEditIndex(-1)}>Cancel</button>

            )}

          </li>

        ))}

      </ul>

    </div>

  );

};

export default TodoList;

这是一个基础的React待办事项列表应用,我使用了React的useState Hook来管理state状态,以下是各部分代码的解释: 

  1. 定义state变量:

   我使用了React的useState Hook来声明和初始化以下几个state变量:

   - todos:这个数组用来存储所有的待办事项。

   - inputValue: 这个变量用来存储输入框的当前值。

   - editIndex: 这个变量用来标识被编辑状态的待办事项在todos数组中的下标索引。

  1. 定义操作函数:

   下面是几个个主要操作函数的功能:

   - addTodo: 添加新的待办事项到待办事项列表中。

   - editTodo: 编辑待办事项列表中的待办事项。

   - deleteTodo:从待办事项列表中删除待办事项。

  1. 渲染组件:

   我使用JSX来定义React组件的输出,组件输出包括:

   - 一个标题

   - 一个输入框和一个“添加”按钮。用户在输入框中输入待办事项的内容,点击“添加”按钮,输入框的内容将被添加到待办事项列表中。

   - 一个待办事项列表。列表中的每一项包括待办事项的内容、一个“删除”按钮和一个“编辑”或“取消编辑”按钮。用户点击“删除”按钮可以删除待办事项,点击“编辑”按钮可以编辑待办事项,点击“取消编辑”按钮可以取消编辑操作。

使用方法

在输入框中,输入你想添加的待办事项并点击添加按钮,待办事项就被添加到列表中。在列表中,你可以点击"删除"按钮删除待办事项,点击"编辑"按钮并输入新的值来编辑当前待办事项,点击"取消编辑"以放弃编辑  

这个项目带给我以下几点经验:

  1. 学习和应用React:通过参与这个项目,我的React技能得到了巩固和应用。我学会了如何使用函数式组件,以及如何使用React Hook来管理组件的状态。这让我能够更高效和灵活地开发React应用。

  2. 熟悉组件化开发:这个项目的核心是将待办事项列表拆分成多个可复用的组件。通过这个实践,我深入理解了组件化开发的概念和优点。我意识到将一个复杂的页面拆分成多个小组件,可以提高代码的可维护性和可重用性。

  3. 熟练运用状态管理:在这个项目中,我学会了如何使用React的useState Hook来管理状态。通过正确地使用状态,我能够实现待办事项列表的增加、编辑和删除功能。这个经验让我更加熟练地理解和应用状态管理的原则和方法。

  4. 增强解决问题的能力:在开发过程中,我遇到了一些问题,例如如何实现编辑功能、如何正确地修改状态等。通过自己的尝试和查阅文档,我逐渐解决了这些问题,并学会了更深入地思考和解决问题的能力。

总的来说,参与这个项目让我对React有了更深入的理解,并提升了我的组件化编程能力和状态管理能力。我相信这些经验将对我未来的React项目开发非常有帮助。

对其他入门同学的学习建议如下:

  1. 先打好基础:在学习React之前,确保你已经掌握了HTML、CSS和JavaScript的基础知识。理解这些基础知识将有助于你更好地理解和应用React的概念和功能  

  2. 学习官方文档和教程:React官方网站上有很多优质的文档和教程,建议你花时间仔细阅读官方文档并完成官方提供的教程。这将帮助你建立起对React的整体认识和理解,并学到一些最佳实践和技巧

  3. 练手小项目:通过做一些小的练手项目来实践所学的知识。可以尝试重写一些已有的项目,如一个简单的待办事项列表,这样可以将理论知识应用于实践,并提升自己的编码能力。

  4. 参与社区和互动:加入React的社区,可以通过阅读博客文章、参与讨论和提问等方式,与其他开发者学习和交流。也可以关注一些开源项目,观摩一下其他人是如何使用React的,从中学习到更多的技巧和经验。

  5. 持续学习并实践:React是一个活跃的技术生态圈,持续学习和保持对新鲜事物的好奇心是非常重要的。保持学习的动力,不断地实践和尝试新的东西,才能更好地掌握和应用React。