第二十章 案例TodoList之动态数据

news2024/10/5 14:18:44

我们之前已经实现了静态的组件拆分,既然是静态说明数据就是死的,显然这不是我们需要的结果,之前我们学习了React组件,知道组件里面的状态数据驱动了页面的显示,每个组件都有属于自己的状态数据。接下来我们改造组件使得组件有自己的状态数据。

分析组件之间的关系

首先我们知道Todolist案例的主要功能是:通过Header组件输入任务项添加任务,在由List组件展示任务项

思考1:Header组件和List组件可以通信吗?现目前好像不能实现兄弟组件的通信。

思考2:Header组件和List组件可以和谁通信?好像是App组件,因为它们是父子关系。

思考3: 我们可以通过App组件建立HeaderList组件之间的数据交互吗?好像可以。

在这里插入图片描述

根据上图以及我们所学知识,可以知道父子组件可以通过props标签属性来进行组件之间的通信。那么我们可以让父组件的状态数据成为一个公共数据,可以同时传递给Header组件和List组件使用。


尝试编写代码

  • App组件
import React, { Component } from 'react'
import Header from "./components/Header"
import List from "./components/List"
import Footer from "./components/Footer"
import "./index.css"

export default class App extends Component {
  // 定义列表的初始状态数据
  state = {todos: [
    {id:'001',name:'吃饭',done: true},
    {id:'002',name:'睡觉',done: true},
    {id:'003',name:'写代码',done: false},
  ]}

  render() {
    const { todos } = this.state
    return (
      <div className="todo-container">
      <div className="todo-wrap">
        <Header/>
        <List todos={todos}/>
        <Footer/>
      </div>
    </div>
    )
  }
}

我们在App组件中定义了任务列表的初始状态数据,并把该数据使用props的方式传入了List组件。

  • List组件
import React, { Component } from 'react'
import Item from '../Item'
import "./index.css"
export default class List extends Component {
  render() {
    const {todos} = this.props
    return (
      <ul className="todo-main">
        {
          todos.map(todo=>{
            return <Item key={todo.id} {...todo}/>
          })
        }
      </ul>
    )
  }
}

我们在List组件中接收到了由App组件传递的数据,且遍历该数据,把单个任务项的数据以批量传递的形式{...todo}交给组件Item

  • Item组件
import React, { Component } from 'react'
import "./index.css"
export default class Item extends Component {
  render() {
    const {name,done} = this.props
    return (
      <li >
            <label>
              <input type="checkbox" defaultChecked={done}/>
              <span>{name}</span>
            </label>
            <button className="btn btn-danger" style={{display:"none"}}>删除</button>
      </li>
    )
  }
}

Item组件接收到props数据后,拿到name值放到span标签中进行展示,done值交给复选框的defaultChecked属性,用于展示任务项的默认状态是否被选中。

  • 查看效果

在这里插入图片描述

至此我们就完成数据在组件的动态传递,他们的传递方式是通过props

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAR ADC系列25:作业和上机实践

作业&#xff1a; 异步SAR逻辑中VALID信号如何产生&#xff1f;答&#xff1a;OUTP和OUTN与非。单纯通过减小“比较器环路”的延时(t1t22*t32*t4)的方式来提升ADC的转换速率可行吗&#xff1f;为什么&#xff1f;答&#xff1a;不可行&#xff0c;还要考虑CDAC建立的速度&…

【ARMv8 编程】A64 数据处理指令——位域字节操作指令

有些指令将字节、半字或字扩展到寄存器大小&#xff0c;可以是 X 或 W。这些指令存在于有符号&#xff08;SXTB、SXTH、SXTW&#xff09;和无符号&#xff08;UXTB、UXTH&#xff09;变体中&#xff0c;并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字…

【失业即将到来?】AI时代会带来失业潮吗?

文章目录前言一、全面拥抱AIGC二、AI正在取代这类行业总结前言 兄弟姐妹们啊&#xff0c;AI时代&#xff0c;说抛弃就抛弃&#xff0c;真的要失业了。 一、全面拥抱AIGC 蓝色光标全面暂停外包&#xff1f; 一份文件截图显示&#xff0c;中国知名4A广告公司&#xff0c;蓝色光…

汇编第二次上机实验(续第一次,字符串比较及双重循环)【嵌入式系统】

汇编第二次上机实验&#xff08;续第一次&#xff0c;字符串比较及双重循环&#xff09;【嵌入式系统】前言推荐说明汇编第二次上机实验&#xff08;续第一次&#xff0c;字符串比较及双重循环&#xff09;内容1 sort说明流程图代码编写结果分析2 string流程图代码编写结果分析…

Nginx的安装、反向代理、负载均衡及部署项目

Nginx 一、Nginx简介 Nginx称为:负载均衡器或 静态资源服务器:html,css,js,img ​ Nginx(发音为“engine X”)是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器&#xff0c;同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Syso…

DOM(上)

DOM&#xff08;文档对象模型&#xff09;&#xff1a;处理可扩展标记语言(HTML或XML&#xff09;的标准编程接口&#xff0c;可以改变网页的内容、结构和样式。DOM树&#xff1a; …

大数据项目实战之数据仓库:电商数据仓库系统——第2章 数据仓库建模概述

第2章 数据仓库建模概述 2.1 数据仓库建模的意义 如果把数据看作图书馆里的书&#xff0c;我们希望看到它们在书架上分门别类地放置&#xff1b;如果把数据看作城市的建筑&#xff0c;我们希望城市规划布局合理&#xff1b;如果把数据看作电脑文件和文件夹&#xff0c;我们希…

CMake——从入门到百公里加速6.7s

目录 一、前言 二、HelloWorld 三、CMAKE 界面 3.1 gui正则表达式 3.2 GUI构建 四 关键字 4.1 add_library 4.2 add_subdirectory 4.3 add_executable 4.4 aux_source_directory 4.5 SET设置变量 4.6 INSTALL安装 4.7 ADD_LIBRARY 4.8 SET_TARGET_PROPERTIES 4.9…

[JavaEE]----Spring03

文章目录Spring_day031&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知…

测试-子查询及数据更新

测试-子查询及数据更新 目录测试-子查询及数据更新1、修改borrow表增加一列&#xff1b;修改日期数据&#xff08;两条语句完成&#xff09;题目代码题解2、 SQL更新&#xff1a;删除-删除“吴宾”的所有成绩记录题目代码3、SQL查询&#xff1a;查询没有被订购的商品题目代码4、…

CMake GUI工具使用 MinGW 64构建工程

系列文章目录 文章目录系列文章目录前言一、open Project是灰色&#xff1f;前言 CMake GUI 打开 CMake GUI。 在 “Where is the source code” 字段中&#xff0c;选择 Krita 源代码目录&#xff1a;E:/krita-dev/krita。 在 “Where to build the binaries” 字段中&#x…

9.Java面向对象----封装

Java面向对象—封装 面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统…

Python 小型项目大全 26~30

二十六、斐波那契 原文&#xff1a;http://inventwithpython.com/bigbookpython/project26.html 斐波那契数列是一个著名的数学模式&#xff0c;被认为是 13 世纪意大利数学家斐波那契的杰作&#xff08;尽管其他人发现它的时间更早&#xff09;。序列从 0 和 1 开始&#xff0…

SAR ADC系列16:CDAC上机实践+作业

目录 作业和上机实践&#xff1a; 通过仿真确定桥接电容Ca的尺寸 采样技术和CDAC相结合 电容校正 为什么在100...0和011...1之间最差&#xff1a;电容的瓶颈在MSB上面 为什么INL最差也发生在中间Code 其他问题 频谱混叠 上级板采样网络时序问题 共模相关问题 关于V…

数据库----------约束、主键约束

目录 1.简介 1.概念 2.作用 3.分类 2.主键约束 1.概念 2.操作 1.添加单列主键 2.添加多列联合主键 3. 通过修改表结构添加主键 4.删除主键 1.简介 1.概念 约束英文: constraint 约束实际上就是表中数据的限制条件 2.作用 表在设计的时候加入约束的目的就是为了…

系统无损迁移、硬盘系统复制完整教程(常用于升级更大硬盘的场景)

阿酷TONY / 2023-4-15 / 长沙 这个教程的应用背景或场景是这样的&#xff1a; 原本使用的ThinkPad笔记本电脑是250G的SSD固态硬盘&#xff0c;使用了一两年后&#xff0c;空间不足了&#xff0c;这个时候需要换一块500G或更大的SSD硬盘&#xff0c;那么问题来了&#xff0c;通…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法&#xff0c;人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警&#xff0c;发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;研究团队…

(十二)排序算法-插入排序

1 基本介绍 1.1 概述 插入排序属于内部排序法&#xff0c;是对于欲排序的元素以插入的方式找寻该元素的适当位置&#xff0c;以达到排序的目的。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时&#xff0c;我们的左手为空并且桌子上的牌面朝下。然后&#xff0c;…

Flink处理大型离线任务稳定性与性能调优探索

Apache Flink作为分布式处理引擎&#xff0c;用于对无界和有界数据流进行状态计算。其中实时任务用于处理无界数据流&#xff0c;离线任务用于处理有界数据。通过本文你将掌握让大型离线任务运行稳定的能力&#xff0c;同时能够通过分析离线任务运行特点&#xff0c;降低任务运…

150.网络安全渗透测试—[Cobalt Strike系列]—[DNS Beacon原理/实战测试]

我认为&#xff0c;无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感&#xff01;&#xff01;&#xff01; 文章目录一、DNS Beacon原理1、DNS Beacon简介2、DSN Beacon工作原理二、DNS Beacon实战测试1、实战测试前提2、实战测试过程一、DNS Beacon原理 1、…