react 组件通信 —— 父子传值 【 函数式/类式 】

news2024/9/26 1:21:32

1、函数式组件通信

父子间通信 —— 父传子

 父组件

export default function father() {
  return (
    <div style={{width:'400px',height:'200px',background:'pink',marginLeft:'500px'}}>
     我是父组件
     <hr />
     <Son name={"韩小刀"}/>
    </div>
  )
}

子组件

export default function son(props) {
  return (
    <div style={{width:'200px',height:'100px',background:'lightgreen'}}>
      我是子组件
      <hr />
      我接受到的父组件的值是:{props.name}
    </div>
  )
}

如下图所示:

 父子间通信 —— 子传父

父组件

export default function father() {
  // 父组件的数据
 const [data,setData] = useState('')
  
// 父组件传给子组件的方法
 const onMessageChange = (message) => {
   setData(message)
 }

  return (
    <div style={{width:'400px',height:'200px',background:'pink',marginLeft:'500px'}}>
     我是父组件
     <div>接收子组件的数据:{data}</div>
     <hr />
     <B sendMessageData={onMessageChange}/>
    </div>
  )
}

 子组件

export default function son({sendMessageData}) {

//子组件操作 给父组件传数据
  const handleData=()=>{
    sendMessageData('韩小刀')
  }
  return (
    <div style={{ width: "200px", height: "100px", background: "lightgreen" }}>
      我是子组件
      <hr />
     <button onClick={handleData} >点我给父组件传数据</button>
    </div>
  );
}

 如下图所示:

 2、类式组件通信

父子间通信 —— 父传子

 父组件

export default class Father extends Component {
  //父组件的状态数据
  state = {
    name:'韩小刀'
  }
  render() {
    return (
      <div style={{width:'400px',height:'200px',background:'pink',marginLeft:'500px'}}>
       我是父组件
     <hr />
     <Son changeDataMessage={this.state.name}/>
    </div>
    )
  }
}

  子组件

export default class Son extends Component {
  render() {
    //接收到父组件的数据
    const {changeDataMessage} = this.props
    return (
      <div style={{ width: "200px", height: "100px", background: "lightgreen" }}>
        我是子组件
        <hr />
        接收到的数据:{changeDataMessage}
      </div>
    );
  }
}

 如下图所示:

 父子间通信 —— 子传父

  父组件


export default class Father extends Component {
  //state写法一
  // constructor(props) {
  //   super(props);
  //   // 初始化状态
  //   this.state = {
  //     childMessage: "",
  //   };
  // }

  //state写法二
  state = {
    name: "",
  };

  changeDataMessage = (message) => {
    this.setState({ name: message });
  };
  render() {
    return (
      <div style={{width: "400px",height: "200px",background: "pink",marginLeft: "500px",}}>
        我是父组件 接收到子数据:{this.state.name}
        <hr />
        <B changeDataMessage={this.changeDataMessage} />
      </div>
    );
  }
}

  子组件

export default class Son extends Component {
  handleMessageData = () => { 
      this.props.changeDataMessage('韩小刀')  
  }
  render() {
    return (
      <div style={{ width: "200px", height: "100px", background: "lightgreen" }}>
        我是子组件
        <hr />
        <button onClick={this.handleMessageData}>点我给父组件传数据</button> 
      </div>
    );
  }
}

 如下图所示:

 

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

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

相关文章

【CUDA】 Trust基本特性介绍及性能分析

Trust简介 Thrust 是一个实现了众多基本并行算法的 C 模板库,类似于 C 的标准模板库(standard template library, STL)。该库自动包含在 CUDA 工具箱中。这是一个模板库,仅仅由一些头文件组成。在使用该库的某个功能时,包含需要的头文件即可。该库中的所有类型与函数都在命名空…

【C++】C++11(三)

我们在C11&#xff08;2&#xff09;中已经很好的解释了右值引用&#xff0c;这次来看看右值引用剩余的一些话题&#xff1a;可变参数包与emplace_back。 目录 可变参数模板&#xff1a;可变参数的sizeof&#xff1a;可变参数的展开&#xff1a;递归函数方式展开参数包&#x…

前端JS特效第27波:jQuery商品放大镜预览代码

jQuery商品放大镜预览代码&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!doctype html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content&quo…

【数智化案例展】厦门市信息中心——爱数助力厦门政务云构建两地三中心多级数据灾备体系...

‍ 爱数案例 本项目案例由爱数投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 厦门市信息中心是厦门市电子政务专门机构&#xff0c;加挂厦门市电子政务中心、厦门市大数…

拆分盘究竟是什么?一篇文章带你了解!

拆分盘是一种特殊的理财产品或投资模式&#xff0c;它通常被描述为“只涨不跌”的投资方式&#xff0c;多指股票&#xff0c;但实质上与传统股市中的股票有本质区别。以下是对拆分盘的详细解析&#xff1a; 一、拆分盘的定义 拆分盘可以理解为一种只涨不跌的理财股票。其特点在…

1996-2023年各省农村居民人均消费支出数据(无缺失)

1996-2023年各省农村居民人均消费支出数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;农村居民人均消费支出 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&…

HTTP中常见的状态码有哪些?

常用的包括以下几个&#xff1a; 200&#xff1a;表示客户端请求成功 201&#xff1a;请求成功,服务器创建了新资源。 204&#xff1a;无内容&#xff0c;服务器成功处理请求&#xff0c;但未返回任何内容。 206: 表示“部分内容”,当客户端请求一个资源的一部分时&#xff0c;…

如何利用AI自动生成绘画?5款AI绘画的六大神器!

以下是五款专业级别的AI绘画工具&#xff0c;它们能够帮助用户迅速生成高质量的AI艺术作品&#xff1a; 1.AI先行者&#xff1a; 这是一款流行的 AI 绘画平台&#xff0c;它利用深度学习技术将你的照片或图像转换成艺术风格的绘画作品。你可以在线使用上上传图片并选择喜欢的艺…

微信定时推送LeetCode每日一题,再也不怕没人喊你刷题了

前段时间发过一篇关于微信机器人开发的文章&#xff0c;讲述了如何快速开发一个微信机器人&#xff0c;本篇文章就来实现一个最近开发的一个功能案例&#xff0c;在这个案例中会遇到了各种问题&#xff0c;可以帮助大家减少自己去踩坑的时间。通过此案例也可以帮助你去扩想一些…

OpenCV中使用Canny算法在图像中查找边缘

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 算法描述 Canny算法是一种广泛应用于计算机视觉和图像处理领域中的边缘检测算法。它由John F. Canny在1986年提出&#xff0c;旨在寻找给定噪声条件下的最佳边…

storybook中剔除chakra-ui的影响,或者剔除其他ui包的影响

介绍 经过一系列初始化完成后&#xff0c;storybook项目启动出来发现多余了一个ui框架的内容。如下图 因为项目中仅仅使用chakraUI的一些功能&#xff0c;并没有使用整体组件功能&#xff0c;所以说完全没必要把它留着这里。经过排查可以使用storybook中的refs功能剔除掉不需要…

1996-2023年各省农业总产值数据(无缺失)

1996-2023年各省农业总产值数据&#xff08;无缺失&#xff09; 1、时间&#xff1a;1996-2023年 2、来源&#xff1a;国家统计局、各省年鉴 3、指标&#xff1a;农业总产值 4、范围&#xff1a;31省 5、缺失情况&#xff1a;无缺失 6、指标解释&#xff1a;农业总产值是…

多协议网关设计架构与实现,支持 RS485/232、CAN、M-Bus、MQTT、TCP 等工业协议接入(附代码示例)

一、项目概述 1.1 背景 随着物联网技术的快速发展&#xff0c;越来越多的设备需要接入网络进行数据交互。然而&#xff0c;不同设备往往采用不同的通信协议&#xff0c;例如工业现场常用的Modbus、CAN、电力载波等&#xff0c;以及物联网领域常用的MQTT、TCP/IP等&#xff0c…

推荐一款功能强大的 GPT 学术优化开源项目GPT Academic:学术研究的智能助手

今天&#xff0c;我将向大家介绍一个强大的开源项目—GPT Academic&#xff0c;它或许正是你一直在寻找的理想工具。 已一跃成为 60.4k Star 的热门项目 GPT Academic 目前在 GitHub 上已经揽获了 60.4k 的 Star&#xff0c;这不仅反映了它的受欢迎程度&#xff0c;更证明了它…

什么是光储充一体化? 光储充一体化有什么优势?

大部分省份划定配储的比例不低于10% “光储充一体化”政策文件:国家层面政策名称 政策要点 发布时间 发布单位 结合实际建设光伏发电、储能、充换电一体化的充电基础设施。中央财政将安排奖励资金支持试点县开展试点工作&#xff0c;示范期内&#xff0c;每年均达到最高目标的试…

(pyqt5)弹窗-Token验证

前言 为了保护自己的工作成果,控制在合理的范围内使用,设计一个用于Token验证的弹窗. 代码 class TokenDialog(QDialog):def __init__(self, parentNone, login_userNone, mac_addrNone, funcNone):super(TokenDialog, self).__init__(parent)self.login_user login_userself…

2024年网络监控软件排名|10大网络监控软件是哪些

网络安全&#xff0c;小到关系到企业的生死存亡&#xff0c;大到关系到国家的生死存亡。 因此网络安全刻不容缓&#xff0c;在这里推荐网络监控软件。 2024年这10款软件火爆监控市场。 1.安企神软件&#xff1a; 7天免费试用https://work.weixin.qq.com/ca/cawcde06a33907e6…

d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题

dcompiler_43.dll 是一个Windows系统中的系统文件&#xff0c;属于DirectX软件的一部分。这个dcompiler_43.dll&#xff08;动态链接库&#xff09;文件主要用于处理与3D图形编程有关的任务&#xff0c;是运行许多游戏和高级图形程序必需的组件之一。那么如果电脑丢失d3dcompil…

新手如何配置运行yolov5环境

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

部署Harbor仓库

本章内容&#xff1a; 安装docker-ce部署harbor仓库上传和拉取 1.安装docker 1&#xff09;拉取源码 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2&#xff09;安装docker-ce yum -y install docker-ce 3&#…