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

85 阅读3分钟

1.React是什么

React是Facebook开源的一个JavaScript库,用于构建用户界面。 React的特点可以概括为:

  • 声明式设计 在React中,你不再需要直接操作DOM,只需要描述UI应该呈现出来的状态,React会根据状态自动更新界面。这提高了开发效率。
  • 组件化 React里 everything is component。你可以把页面拆分成一个个可复用的组件,利于代码组织。
  • 高效 React通过虚拟DOM机制,可以优化DOM操作,最小化页面重绘。提高应用的性能表现。
  • 单向数据流 React采用单向数据流,从而减少了代码间的相互依赖,也加易于调试。
  • 生态完善 React拥有众多第三方库的支持,组件丰富。综上,React是一个构建UI的高效、灵活的框架。它提高了前端开发的体验,是一个优秀的前端解决方案。目前广泛应用于网页和手机应用的开发。

2.如何实现一个简单的React待办事项应用

  1. 使用useState Hook来定义todos状态变量及其更新函数,用于存储和管理待办事项列表。
  2. 使用map()方法循环渲染todos数组,生成待办事项组件,绑定删除等事件。
  3. 提供一个表单,允许用户输入新的待办事项,并在提交时通过更新todos状态变量添加新的待办项。
  4. 每个待办事项内可以设置checkBox标记完成状态,并在onchange事件中更新该todo的completed状态。
  5. 根据todo的completed状态设置不同的样式,以示完成或未完成。
  6. 提供删除功能,通过filter或slice修改todos状态实现删除效果。
  7. 使用CSS样式来美化待办事项的显示效果。
  8. 部署到服务器环境,使应用程序全面运行。
  9. 可以添加更多功能,如项筛选、编辑、drag拖拽排序等以完善应用体验。
  10. 利用LocalStorage使待办事项在页面刷新后依然保存。

3.使用 React 实现的简单待办事项列表示例

jsx
import { useState } from 'react';

function App() {

  const [todos, setTodos] = useState([
    { text: 'Learn React', completed: false },
    { text: 'Buy milk', completed: false }  
  ]);

  const addTodo = text => {
    const newTodos = [...todos, { text }];
    setTodos(newTodos);
  }

  const completeTodo = index => {
    const newTodos = [...todos];
    newTodos[index].completed = true;
    setTodos(newTodos);
  }

  const removeTodo = index => {
    const newTodos = [...todos];
    newTodos.splice(index, 1);
    setTodos(newTodos);
  }

  return (
    <div>
      {todos.map((todo, index) => (
        <div key={index}>
          <input
            type="checkbox"
            checked={todo.completed}
            onChange={() => completeTodo(index)}
          />
          <span>{todo.text}</span>
          <button onClick={() => removeTodo(index)}>X</button>
        </div>
      ))}

      <input type="text" onKeyDown={e => {
        if (e.key === 'Enter') {
          addTodo(e.target.value);
          e.target.value = '';
        }
      }} />
    </div>
  );
}

export default App;

主要逻辑:

  • 使用useState管理todos数组
  • 提供addTodo、completeTodo、removeTodo方法来修改todos
  • 使用map渲染todos列表,绑定事件处理逻辑
  • 提供输入框添加新的待办项

4.后记

  1. 在这个练习中,我对React有了更直观更深入的体会。起初针对这个需求,我脑海里还是传统的HTML+JS操作DOM的思路。
  2. 但是用React来实现就完全不一样了。我特别喜欢React里“一切都是组件”的理念。将页面拆分成可复用的组件,有效组织代码,提高开发效率。
  3. 组件之间通过props传递数据和交互,避免了复杂的依赖关系。另一个亮点是Hook带来的编程体验改变。useState等Hook使函数组件可以实现状态管理,使代码更简洁。
  4. 相比以前繁琐的class组件,function组件的语法感觉更自然。最后,React的虚拟DOM带来的性能优势也让我印象深刻。
  5. 通过Diff算法最小化重绘视图,这样可以实现高效的DOM操作。总体来说,这是一次非常棒的学习经历。让我对React有了直观的感受,对其编程思想和模式有了深入的理解。
  6. 这将大大提升我使用React开发应用的能力和效率。我会继续学习React的更多特性和最佳实践。