构建React TodoList应用:管理你的任务清单

本文主要是介绍构建React TodoList应用:管理你的任务清单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

构建React TodoList应用:管理你的任务清单

在日常生活和工作中,任务管理是一项至关重要的任务。为了更好地组织和管理我们的工作和生活,我们需要一个高效而简单的任务管理工具。本文将介绍如何使用React框架构建一个功能丰富的TodoList应用,帮助你轻松管理任务清单。
在这里插入图片描述

1. 准备工作

在开始之前,确保你已经安装了Node.js和npm,并创建了一个新的React项目。你可以使用以下命令初始化一个新的React项目:

npx create-react-app todo-list-app
cd todo-list-app

2. 编写组件

我们将应用分为三个主要组件:Header、TodoList和Footer。Header用于添加新任务,TodoList用于展示任务列表,Footer用于显示任务统计信息和清除已完成任务。

Header组件

// Header组件
import React, { Component } from 'react'
import style from './Header.module.css'export default class Header extends Component {state = { value: '' }handleChange = (e) => {this.setState({ value: e.target.value })}handleEnter = (e) => {if (e.key === 'Enter') {this.props.handleAdd(this.state.value)this.setState({ value: '' })}}render() {const { value } = this.statereturn (<div className={style.header}><inputplaceholder="What needs to be done?"className={style.input}value={value}type="text"onChange={this.handleChange}onKeyDown={this.handleEnter}/></div>)}
}

TodoList组件

// TodoList组件
import React, { Component } from 'react'
import Item from '../TodoItem'
import style from './TodoList.module.css'export default class TodoList extends Component {handleChange = (item) => {const { data } = this.props;const newData = data.map(it => it.id === item.id ? item : it);this.props.handleChange(newData);}render() {const { data } = this.props;return (<div className={style.list}>{data.map(it => <Item {...it} key={it.id} handleChange={this.handleChange} />)}</div>)}
}

Footer组件

// Footer组件
import React, { Component } from 'react'
import style from './Footer.module.css'export default class Footer extends Component {state = {checked: false}onClear = () => {const { data } = this.props;const newData = data.filter(it => !it.checked);this.props.handleChange(newData);this.setState({ checked: false });}handleCheck = (e) => {const checked = e.target.checked;const { data } = this.props;let newData = data.map(it => ({ ...it, checked }));this.props.handleChange(newData);this.setState({ checked });}render() {const { checked } = this.state;const { data } = this.props;const completedCount = data.filter(it => it.checked).length;return (<div className={style.footer}><input type="checkbox" checked={checked} onChange={this.handleCheck} /><span className={style.selected}>已完成{completedCount}/全部{data.length}</span><button className={style.button} onClick={this.onClear}>清除已完成任务</button></div>)}
}

3. 整合组件

在App.js中导入并使用Header、TodoList和Footer组件,并实现添加任务、更新任务和清除已完成任务的功能。

// App.js
import React, { Component } from 'react'
import Header from './components/Header'
import TodoList from './components/TodoList'
import Footer from './components/Footer'
import style from './App.module.css'const initialTodos = [{ id: 'bv2LBfNfFl', value: 'React', checked: false },{ id: 'tBrIBgKu4l', value: '你好', checked: true },{ id: '9FXIFbKJ69', value: 'Vue', checked: false },
];export default class TodoListApp extends Component{state = {data: initialTodos,}handleAdd = (value) => {const { data } = this.statethis.setState({ data: [{ id: generateRandomString(), value, checked: false }, ...data] })}handleChange = (data) => {this.setState({ data });}render() {const { data } = this.state;return (<div className={style.todoList}><Header handleAdd={this.handleAdd} /><TodoList data={data} handleChange={this.handleChange} /><Footer data={data} handleChange={this.handleChange} /></div>)}
}

4. 添加样式

使用CSS模块化的方式为每个组件添加样式,保持组件之间的样式隔离性,避免样式冲突。

5. 运行项目

运行项目并在浏览器中查看TodoList应用,验证功能是否正常。

npm start

通过以上步骤,我们成功地使用React框架构建了一个功能丰富的TodoList应用,实现了任务的添加、更新和清除功能,为我们的任务管理提供了便捷的解决方案。

参考

  • 构建React TodoList应用:管理你的任务清单
  • 完整代码

这篇关于构建React TodoList应用:管理你的任务清单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/738963

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过