教程 react tutorial

Todo List 应用(入门)

Todo List 是开发者在学习任何前端框架时都会接触到的经典项目。通过实现一个简单的待办事项(Todo)应用,开发者可以深入理解 React 的基本概念,包括组件化开发、状态管理、事件处理等。

1. 创建 Todo List 项目

首先,通过 create-react-app 创建一个新的 React 项目:

bash
npx create-react-app todo-list
cd todo-list
npm start

`

这会启动一个默认的 React 项目,接下来我们可以根据需求进行修改。

2. 项目结构

一个简单的 Todo List 应用需要以下几个组件:

  • App:主应用组件,负责渲染 Todo 列表以及添加新任务。
  • TodoItem:单个 Todo 项组件,负责显示每个任务和删除任务的功能。
  • TodoForm:表单组件,用于输入新任务。

目录结构

bash
src/
  ├── components/
  │   ├── TodoForm.js
  │   └── TodoItem.js
  ├── App.js
  └── index.js

3. 实现 TodoList 功能

3.1 TodoItem 组件

在 TodoItem.js 文件中,我们创建一个简单的组件,接收任务内容和删除功能作为 props。

js
import React from 'react';

function TodoItem({ todo, onDelete }) {
  return (
    <div>
      <span>{todo}</span>
      <button onClick={onDelete}>删除</button>
    </div>
  );
}

export default TodoItem;

3.2 TodoForm 组件

在 TodoForm.js 文件中,我们创建一个表单,用于输入新任务。

js
import React, { useState } from 'react';

function TodoForm({ onAddTodo }) {
  const [todo, setTodo] = useState('');

  const handleSubmit = (e) => {
    e.preventDefault();
    if (todo) {
      onAddTodo(todo);
      setTodo('');
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input 
        type="text" 
        value={todo} 
        onChange={(e) => setTodo(e.target.value)} 
        placeholder="输入任务"
      />
      <button type="submit">添加</button>
    </form>
  );
}

export default TodoForm;

3.3 App 组件

在 App.js 文件中,我们将两个组件结合起来,管理 Todo 列表的状态,并传递必要的 props。

js
import React, { useState } from 'react';
import TodoForm from './components/TodoForm';
import TodoItem from './components/TodoItem';

function App() {
  const [todos, setTodos] = useState([]);

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

  const deleteTodo = (index) => {
    setTodos(todos.filter((_, i) => i !== index));
  };

  return (
    <div>
      <h1>Todo List</h1>
      <TodoForm onAddTodo={addTodo} />
      <div>
        {todos.map((todo, index) => (
          <TodoItem 
            key={index} 
            todo={todo} 
            onDelete={() => deleteTodo(index)} 
          />
        ))}
      </div>
    </div>
  );
}

export default App;

4. 完善应用功能

4.1 添加任务

每次提交表单时,TodoForm 会调用 onAddTodo 函数,将输入的任务内容添加到 todos 数组中。

4.2 删除任务

每个 TodoItem 都有一个删除按钮,点击时会调用 onDelete 函数,移除对应的任务。

5. 总结

通过这个简单的 Todo List 应用,开发者可以了解 React 组件的组织方式、如何管理组件状态以及如何处理事件。尽管这个项目简单,但它是学习 React 的一个重要入门实践,可以帮助开发者更好地掌握 React 的核心概念。