React 开发 | 父子组件间通信

2023-05-16

文章目录

  • 一、省流
  • 二、父传子例子
  • 三、子传父例子

一、省流

父组件 -> 子组件:通过 props 传递
子组件 -> 父组件:通过 props 传递,但是父组件需要提取给子组件传递一个预定义的函数

二、父传子例子

父组件
父组件将定义好的数据直接用直接通过 props 传递

import React, { Component } from "react";
import List from "./component/List";

export default class App extends Component {
  // 初始化状态
  state = {
    todos: [
      { id: "1", name: "吃饭", done: true },
      { id: "2", name: "睡觉", done: true },
    ],
  };

  render() {
    const {todos} = this.state
    // 直接通过 props 传递
    return (
        <div>
          <List todos={todos}/>
        </div>
    );
  }
}

子组件
子组件通过 this.props 接收数据

import React, { Component } from 'react'

export default class index extends Component {

  render() {
    const {todos} = this.props
    return (
      <div >
      <h1>待办清单</h1>
        {
          todos.map((todo)=>{
            return <h3>todo.name</h3>
          })
        }
      </div>
    )
  }
}

三、子传父例子

父组件
为了接收来自子组件的数据,需要预定义一个函数,将函数通过 props 传递给子组件

import React, { Component } from "react";
import List from "./component/List";

export default class App extends Component {
  // 初始化状态
  state = {
    todos: [
      { id: "1", name: "吃饭", done: true },
      { id: "2", name: "睡觉", done: true },
    ],
  };

  // 添加一个 todo 对象,用于子组件向父组件传递参数
  addTodo = (todoObj) => {
    const todos = this.state.todos;
    const newTodos = [todoObj, ...todos];
    this.setState({ todos: newTodos });
  };

  render() {
    const {todos} = this.state
    // 通过函数传递给子组件
    return (
       <List todos={todos} addTodo={this.addTodo}/>
    );
  }
}

子组件
子组件接收到来自父组件的函数,通过调用函数实现数据传递

import React, { Component } from 'react'

export default class index extends Component {

  handleKeyUp = (event) => {
    const {keyCode, target} = event;
    if(keyCode !== 13) return
    if(target.value.trim() === ""){
      alert("输入不能为空")
      return
    }
    
    const todoObj = {id: nanoid(), name: target.value, done: false}
    // 在子组件中,调用父组件函数,传递参数给父组件
    this.props.addTodo(todoObj)
    target.value = ''
  }

  render() {
    const {todos} = this.props
    return (
      <div >
      <input onKeyUp={this.handleKeyUp} type="text" placeholder='请输入待办事项'/>
      <h1>待办清单</h1>
        {
          todos.map((todo)=>{
            return <h3>todo.name</h3>
          })
        }
      </div>
    )
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 开发 | 父子组件间通信 的相关文章

  • Ubuntu下程序进程堆栈信息——gstack

    前言 在Ubuntu下调试程序 xff0c 大部分是启动前使用gdb进行调试 xff0c 当然也有其他方法 xff0c 程序在运行中 xff0c 为了不打断程序正常运行 xff0c 也有一些工具进行调试 当前本文章旨在说明不安装其他额外程序
  • 9.针对Linux的8种最佳免费防病毒程序

    虽然Linux操作系统相当稳定和安全 xff0c 但它们可能不完全免疫威胁 所有计算机系统都可能遭受恶意软件和病毒攻击 xff0c 其中包括运行基于Linux的操作系统的系统 但是 xff0c 对于基于Linux的操作系统而言 xff0c
  • 有铅焊锡丝与无铅焊锡丝的性能差异大解析

    有铅焊锡丝与无铅焊锡丝是二大类差另外产物档次 xff0c 由于其金属成份差别造成熔点也差别 xff0c 一样通常有铅焊锡丝 的熔点在183度 xff0c 而无铅焊锡丝的熔点为217 227度 含铅量越少熔点将越高 由于焊锡丝的熔点温度进步之
  • linux中的系统调用

    前言 xff1a 本文只讨论linux中的系统调用 xff0c 不考虑windows等其他操作系统 两点 xff1a 1 系统调用时 xff0c 进程调用的是操作系统的内核函数 xff0c 不是进程 2 系统调用时 xff0c 会出现上下文
  • iView 日期选择器开始时间至结束时间限制

    需要考虑以下条件 开始时间和结束时间都不能大于当前时间开始时间不能大于结束时间 html lt FormItem label 61 34 起止时间 34 gt lt DatePicker type 61 34 date 34 v model
  • 树莓派3安装笔记(1)-安装操作系统Raspbian以及安装必要软件

    拿到了树莓派3后 xff0c 经过短暂的兴奋 xff0c 终于开始实战安装OS了 以下步骤基于官方的文章https www raspberrypi org learning software guide quickstart xff0c 选
  • C中需要检验其执行是否成功的函数(检验返回值)

    一 malloc xff08 xff09 因为当内存分配完了后 xff0c 就无法再分配空间了 xff0c 所以malloc失败也是有的是 xff0c 当malloc失败时返回NULL char s 61 void malloc SIZE
  • 《Java核心技术 卷1》

    目录 第4章 对象和类 lt 1 gt 静态字段和静态方法 lt 2 gt 初始化块 lt 3 gt 定义抽象类的对象变量 lt 4 gt hashCode方法得到散列码 lt 5 gt 虚拟机中的泛型类型信息 第五章 继承 第6章 接口
  • Kalibr 之 Camera-IMU 标定 (总结)

    Overview 欢迎访问 持续更新 xff1a https cgabc xyz posts db22c2e6 ethz asl kalibr is a toolbox that solves the following calibrati
  • VMware Workstations Pro 14 建立的虚拟机目录无法删除

    起因 通过VMware新建的RedHat虚拟机 xff0c 无意间的强制关机 xff0c 导致该虚拟机开机黑屏无法正常开启 xff0c 而且也关不掉 尝试删除自己创建的虚拟机目录文件 xff0c 提示文件被占用 通过任务管理器想要结束相关进
  • 矩形目标检测

    身份证 名片 书籍 考试试卷 答题卡这些检测目标都属于矩形目标检测 一 xff0c 现有技术 传统检测方法思路 xff1a 第一步 xff0c 采用滑动窗口 xff0c 设置不同的大小 xff0c 遍历图像 xff0c 得到一些目标的候选框
  • 几种常用通信协议

    通信可以形象的比喻成两个人讲话 xff1a 1 你说的别人得能听懂 xff1a 双方约定信号的协议 2 你的语速别人得能接受 xff1a 双方满足时序要求 一 IIC协议 xff1a 2C串行总线一般有两根信号线 xff0c 一根是双向的数
  • 基础篇——树莓派远程连接工具VNC不显示视频或摄像头画面解决方式

    背景故事 在树莓派上打开摄像头 xff0c 发现HDMI输出的桌面有画面 xff0c 但VNC这边没有画面 xff1b 之前有一次使用播放器播放视频也出现这个问题 xff0c 现记录解决方式 原因分析 VNC远程桌面并不是使用画面传输的方式
  • 穿越机(无人机航模)电池组装教程-电线接口

    对于动手能力强 xff0c 或者穷逼来说 xff0c 购买品牌电池玩穿越机 xff0c 或者其他航模 是非常浪费钱的 本着能自己干就不需要厂商辛苦的原则 电池组装 xff0c 我们可以自己做 非航模圈的电池 xff0c 一般都需要自带平衡电
  • UITextView

    闪退问题 scrollViewDidScroll 改为 scrollViewWillBeginDragging 禁止编辑 text setEditable NO 光标位置输入 64 param emoji 要输入的内容emoji和字符 vo
  • iView 滚动条样式

    滚动条样式 webkit scrollbar width 6px height 6px webkit scrollbar thumb background ccc webkit scrollbar track background e1e1
  • 英特尔 RealSense D415 + OpenCV 4.0 + VS2017 配置方法

    首先是Opencv 4 0 43 VS2017的配置过程 xff0c 网上已经有很多类似教程 xff0c 这里不再累赘 xff1a https www cnblogs com xinxue p 5766756 html 接下来开始配置D41
  • Android 系统调用实现函数功能--SVC指令的实现与检测

    0x0 简述 xff1a arm android中通过一些反编译的工具分析ELF文件时 xff0c 根据一些导入的系统函数可以很轻松的找到一些功能代码的实现 xff1a 查看libc中分析这些函数的实现 xff1a arm中通过SVC指令实
  • Docker学习笔记(九):Docker +Jenkins +Github持续集成

    本次配置时 xff0c jenkins需要配置在外网可访问的服务器上 xff0c 因为在git push内容到github时 xff0c 触发Webhooks并推送到jenkins服务器上 1 配置Github xff08 通过秘钥登录 x
  • opencv-python 常用函数介绍

    目录 imread xff1a 读取图片 imshow xff1a 展示图片 resize xff1a 图片等比例缩放 split xff1a 获取所有像素的颜色值 merge xff1a 根据颜色值合成图片 VideoCapture xf

随机推荐

  • redis 内存占用分析

    在Redis命令行中 xff0c 执行MEMORY STATS命令查询内存使用详情 Redis实例的内存开销主要由两部分组成 xff1a 业务数据的内存开销 xff0c 该部分一般作为重点分析对象 非业务数据的内存开销 xff0c 例如主备
  • php laravel 分析 redis 各个key的内存占用情况

    lt php namespace App Console Commands Tools use Illuminate Console Command use Illuminate Support Facades DB class Redis
  • centos7手动修改dns

    DNS是计算机域名系统 Domain Name System 或Domain Name Service 的缩写 xff0c 它是由域名解析器和域名服务器组成的 域名服务器是指保存有该网络中所有主机的域名和对应IP地址 xff0c 并具有将域
  • 查看并关闭占用端口

    查看占用端口 sudo lsof i 8888 关闭占用端口 sudo kill 9 2558243
  • 从水果连连看到两条序列比对

    一 序列比对 Sequence Alignment 序列比对 xff08 sequence alignment xff09 xff0c 目前是生物信息学的基本研究方法 算法类似于连连看 xff0c 规则是上下两个水果一样 xff0c 就可以
  • Nginx 配置详解

    Nginx 配置 文章目录 Nginx 配置文件结构全局配置events 配置http 配置server 配置 Rewrite一 地址重写 xff0c 地址转发 xff0c 重定向二 URL 重写语法 xff1a 使用 xff1a 三 if
  • 趣谈网络协议(一)

    一般来说 xff0c 网上的购物 都是基于应用层的Http协议 那么在这一层协议书我们包装了什么呢 xff0c 请看下图 一 应用层 Http头 http1 1 POST URL 正文格式 content type 长度 content l
  • JS 中 Json 数据的快速排序

    主要方法 span class token comment 升序排列 span span class token keyword function span span class token function up span span cl
  • 生物信息学导师推荐(持续更新)

    本系列会持续更新 xff0c 帮助大家找到更适合自己的导师 xff0c 注意排名不分先后 xff0c 接下来我们开始介绍 xff1a 陈润生 单位 xff1a 中国科学院生物物理研究所 方向 xff1a 长非编码RNA以及编码小肽的系统发现
  • Python 中变量的多种复制方法(常规拷贝,浅拷贝,深拷贝)

    常规拷贝 大家常用的变量复制方法 xff0c 用 61 就行 但是 xff01 但是 xff01 但是 xff01 在我们复制字典和列表时会和我们预想的不一致 接下来 xff0c 做个小实验 常规拷贝在原始变量 x 的改变后 xff0c 因
  • 图解机器学习:分类模型性能评估指标

    人间出现一种怪病 xff0c 患病人群平时正常 xff0c 但偶尔暴饮暴食 xff0c 这种病从外观和现有医学手段无法分辨 为了应对疫情 xff0c 准备派齐天大圣去下界了解情况 事先神官从人间挑选了一些健康人和患病者来对大圣的业务能力进行
  • 数据库涉及大量数据查询时的注意事项

    避免频繁连接和关闭数据库 xff0c 这样会导致IO访问次数太频繁 设计表时要建立适当的索引 xff0c 尤其要在 where 及 order by 涉及的列上建立索引 避免全表扫描 xff0c 以下情况会导致放弃索引直接进行全部扫描 避免
  • axios 使用详解

    一 安装 cnpm install axios 二 使用 三种写法 span class token comment 第一种写法 span axios span class token punctuation span span class
  • 生物序列比对的几种应用场景(图文)

    今天和大家讨论几种序列比对的应用场景 xff0c 当然只是抛转引玉 xff0c 如果小伙伴有其他应用场景 xff0c 欢迎讨论 一 物种 基因的进化 二 基因组学 2 1 比较基因组学揭示保守区 2 2 比较基因组学揭示功能元件 例如上图的
  • 图解机器学习之回归模型性能评估指标

    一个房价预测的任务 xff0c 老板说你看看这个模型咋样 xff1f 我们先绘制一个坐标轴 xff1a Y 轴为房价 xff0c X 轴为年份 将过去房价数据绘制为绿色 xff0c 回归模型绘制为蓝色 关键问题是 xff0c 怎么知道这个模
  • Chrome 将 http 域名自动跳转 https 的解决方案

    问题来源 使用 Chrome 内核浏览器 xff0c 包括 Google Chrome xff0c edge xff0c 360浏览器等 为了安全在访问同一域名时 xff0c 只要访问过带有 https 域名 xff0c 如果再使用http
  • 一文读懂相分离(图文详解)

    目录 什么是相分离 xff1f 相分离的原理 相分离的分子功能 生物信息中的相分离 一 什么是相分离 xff1f 相分离 phase separation 本身是一个物理化学概念 xff0c 二元或多元混合物会在一定的条件下分离为不同的相
  • g++: 内部错误:Killed (程序 cc1plus)

    这个原因是内存不足 xff0c 在linux下增加临时swap空间 step 1 sudo dd if 61 dev zero of 61 home swap bs 61 64M count 61 16 注释 xff1a of 61 hom
  • React 开发 | 样式模块化

    1 使用 ES6 实现样式模块化 xff0c 避免样式冲突 index module css span class token punctuation span title span class token punctuation span
  • React 开发 | 父子组件间通信

    文章目录 一 省流二 父传子例子三 子传父例子 一 省流 父组件 gt 子组件 xff1a 通过 props 传递 子组件 gt 父组件 xff1a 通过 props 传递 xff0c 但是父组件需要提取给子组件传递一个预定义的函数 二 父