React.js期末项目

引言

React.js是一个用于构建用户界面的开源JavaScript库。它由Facebook开发,是一个非常受欢迎的前端框架。React.js的主要特点是组件化、虚拟DOM和单向数据流。在本文中,我们将通过一个实际的期末项目来介绍如何使用React.js。

项目概述

我们的期末项目是一个简单的待办事项应用程序。用户可以添加、编辑和删除待办事项,并可以标记已完成的事项。我们将使用React.js来构建这个应用程序的用户界面。

准备工作

在开始编写代码之前,我们需要安装React.js的开发环境。首先,我们需要安装Node.js,这是一个基于Chrome V8引擎的JavaScript运行环境。然后,我们可以使用Node.js的包管理器npm来安装React.js。

$ npm install -g create-react-app
$ create-react-app todo-app
$ cd todo-app
$ npm start

这将创建一个名为todo-app的新React.js项目,并启动开发服务器。我们可以在http://localhost:3000上访问应用程序。

创建组件

在React.js中,我们使用组件来构建用户界面。我们将创建三个组件:TodoList、TodoItem和AddTodo。

import React, { Component } from 'react';

class TodoList extends Component {
  render() {
    return (
      <div>
        {this.props.todos.map(todo => (
          <TodoItem
            key={todo.id}
            todo={todo}
            onDelete={this.props.onDelete}
            onToggle={this.props.onToggle}
          />
        ))}
      </div>
    );
  }
}

class TodoItem extends Component {
  render() {
    const { id, title, completed } = this.props.todo;
    return (
      <div>
        <input
          type="checkbox"
          checked={completed}
          onChange={this.props.onToggle.bind(this, id)}
        />
        {title}
        <button onClick={this.props.onDelete.bind(this, id)}>
          删除
        </button>
      </div>
    );
  }
}

class AddTodo extends Component {
  state = {
    title: ''
  };

  onSubmit = e => {
    e.preventDefault();
    this.props.onAdd(this.state.title);
    this.setState({ title: '' });
  };

  onChange = e => this.setState({ [e.target.name]: e.target.value });

  render() {
    return (
      <form onSubmit={this.onSubmit}>
        <input
          type="text"
          name="title"
          placeholder="添加待办事项"
          value={this.state.title}
          onChange={this.onChange}
        />
        <input type="submit" value="添加" />
      </form>
    );
  }
}

组合组件

现在我们需要将这些组件组合在一起来构建我们的应用程序。

class App extends Component {
  state = {
    todos: [
      {
        id: 1,
        title: '学习React.js',
        completed: false
      },
      {
        id: 2,
        title: '完成期末项目',
        completed: false
      },
      {
        id: 3,
        title: '提交作业',
        completed: false
      }
    ]
  };

  handleToggle = id => {
    this.setState({
      todos: this.state.todos.map(todo => {
        if (todo.id === id) {
          todo.completed = !todo.completed;
        }
        return todo;
      })
    });
  };

  handleDelete = id => {
    this.setState({
      todos: [...this.state.todos.filter(todo => todo.id !== id)]
    });
  };

  handleAdd = title => {
    const newTodo = {
      id: Date.now(),
      title,
      completed: false
    };
    this.setState({ todos: [...this.state.todos, newTodo] });
  };

  render() {
    return (
      <div>
        Todo List
        <AddTodo onAdd={this.handleAdd} />
        <TodoList
          todos={this.state.todos}
          onDelete={this.handleDelete}
          onToggle={this.handleToggle}
        />
      </div>
    );
  }
}

export default App;

运行应用程序

现在我们可以在开发服务器上运行我们的应用程序。

$ npm start

打开http://localhost:3000,您将看到一个简单的待办事项应用程序。

结论

在本文中,我们通过一个简单的期末项目介绍了如何使用React.js。我们创建了三个组件,分别用于显示