构建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

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方