React示例 | 青训营

38 阅读4分钟

React 是一个用于构建用户界面的库,借助它可以很方便地实现一个简单的待办事项列表。在这个列表中,用户可以添加、编辑和删除待办事项。

首先,需要创建一个 React 组件来表示待办事项列表。这个组件将包含一个状态数组,存储所有待办事项的信息。在组件的构造函数中,初始化状态为空数组。

jsxCopy code
import React, { Component } from 'react';

class TodoList extends Component {
  constructor() {
    super();
    this.state = {
      todos: [],
      newTodo: ''
    };
  }

  render() {
    // 渲染待办事项列表
    const todos = this.state.todos.map((todo, index) => (
      <div key={index}>
        <span>{todo}</span>
        <button onClick={() => this.editTodo(index)}>编辑</button>
        <button onClick={() => this.deleteTodo(index)}>删除</button>
      </div>
    ));

    // 渲染添加新待办事项的表单
    const newTodoForm = (
      <form onSubmit={this.addTodo}>
        <input type="text" value={this.state.newTodo} onChange={this.handleInputChange} />
        <button type="submit">添加</button>
      </form>
    );

    return (
      <div>
        {todos}
        {newTodoForm}
      </div>
    );
  }

  // 处理输入框值的变化
  handleInputChange = (event) => {
    this.setState({ newTodo: event.target.value });
  };

  // 添加新的待办事项
  addTodo = (event) => {
    event.preventDefault();
    const newTodo = this.state.newTodo.trim();
    if (newTodo !== '') {
      this.setState((prevState) => ({
        todos: [...prevState.todos, newTodo],
        newTodo: '' // 清空输入框
      }));
    }
  };

  // 编辑待办事项
  editTodo = (index) => {
    const editedTodo = prompt('请输入新的待办事项', this.state.todos[index]);
    if (editedTodo !== null) {
      const todos = [...this.state.todos];
      todos[index] = editedTodo;
      this.setState({ todos });
    }
  };

  // 删除待办事项
  deleteTodo = (index) => {
    const todos = [...this.state.todos];
    todos.splice(index, 1);
    this.setState({ todos });
  };
}

export default TodoList;

在上面的代码中,首先渲染了当前的待办事项列表,并使用 map 函数遍历状态数组创建对应的 JSX 元素。对于每个待办事项,添加了一个编辑按钮和一个删除按钮。点击编辑按钮会弹出一个输入框,允许用户修改待办事项的文字。

然后,渲染了一个添加新待办事项的表单,其中的输入框值通过组件的状态进行控制。通过 onChange 事件监听输入框值的变化,并使用 handleInputChange 方法更新状态中的 newTodo 值。点击提交按钮时,调用 addTodo 方法来添加新的待办事项。

addTodo 方法通过 preventDefault 阻止表单的默认提交行为。它首先去除输入框内容的前后空格,然后检查内容是否为空。如果不为空,将新的待办事项添加到状态数组中,并清空输入框的值。

editTodo 方法先弹出一个提示框,要求用户输入新的待办事项的文字。如果用户点击了确定按钮且输入不为空,就更新状态数组中对应索引的待办事项。

deleteTodo 方法将状态数组中对应索引的待办事项删除。

最后,通过将组件导出为默认模块,可以在其他地方使用这个待办事项列表。

这段代码是一个基本的示例,可以根据需要进行扩展和美化。可以添加样式、持久化数据等功能,以提供更好的用户体验。总的来说,使用 React 来实现待办事项列表非常简单和灵活。

React是一个用于构建用户界面的库,它可以帮助开发人员更方便地实现一个待办事项列表。

在这个示例中,作者首先创建了一个React组件来表示待办事项列表。这个组件有一个状态数组,用于存储所有待办事项的信息,并且在构造函数中初始化为空数组。这个组件的render方法用于渲染待办事项列表和添加新待办事项的表单。

在待办事项列表的渲染过程中,使用了map函数来遍历状态数组,并为每个待办事项创建对应的JSX元素。在每个待办事项元素中,添加了一个编辑按钮和一个删除按钮。点击编辑按钮会弹出一个输入框,允许用户修改待办事项的文字。

在添加新待办事项的表单中,通过使用状态来控制输入框的值。通过onChange事件监听输入框值的变化,并通过handleInputChange方法来更新状态中的newTodo值。当点击提交按钮时,调用addTodo方法来添加新的待办事项。

这段代码还包括了编辑待办事项和删除待办事项的功能。通过调用editTodo方法,用户可以编辑待办事项的文字。而调用deleteTodo方法,可以删除指定的待办事项。

这段代码让开发人员能够轻松地构建出符合用户界面需求的组件,而不必考虑太多底层实现的细节。React的组件化思想使得代码可维护性和重用性都得到了提高。

此外,这个示例也展示了一些React的特性,如状态管理和事件处理。通过使用状态来控制组件的行为和视图,我们可以在不同的状态之间进行自由切换。而事件处理机制让我们能够对用户的操作作出相应,并更新组件的状态或执行其他逻辑。

总的来说,React是一个功能强大且易于使用的库,它的组件化思想和灵活性使得开发人员能够快速构建出复杂的用户界面。通过这个示例,我对React的使用有了更深入的了解,也对它的优势有了更清晰的认识。我期待进一步学习和应用React,以提升我的前端开发能力。