011 create-react-app 组件之间的数据传递

2024-03-25 17:32

本文主要是介绍011 create-react-app 组件之间的数据传递,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

子组件给父组件传值

创建一个News组件,在News组件里对父组件进行传值

import React, { Component } from 'react'
export default class News extends Component {constructor(props) {super(props);this.state = {id: "子组件News"};};render() {return (<div><h1>新闻内容{this.props.newsText}</h1><button type="button"onClick={this.props.homeSub.bind(this, this.state.id)}>点我传递数据给父组件</button></div>)}
}

创建Home组件,引用子组件,并创建homeSub函数,将homeSub函数传给子组件,用于接收子组件发来的数据

import React, { Component } from 'react'
import News from './News'
export default class Home extends Component {constructor(props) {super(props);this.state = {id: "父组件Home"};};homeSub = (value) => {console.log(`News组件给Home组件传值内容:${value}`)}render() {return (<div><News text={"震惊,某某某竟然****了某某某"} homeSub={this.homeSub} /></div>)}
}

如下图所示,父组件成功的接收到了子组件的数据

同级组件之间传值

首先安装pubsub-js

npm i pubsub-js

在News组件里用PubSub设置传递事件,与传递的值

import React, { Component } from 'react'
import PubSub from "pubsub-js"
export default class News extends Component {pubsub() {//事件名为:toPhone,传值为:你有新消息了PubSub.publish("toPhone", "你有新消息了");}render() {return (<div><h1>新闻内容{this.props.newsText}</h1><button type="button" onClick={this.pubsub}>点我传递数据给Phone组件</button></div>)}
}

在Phone组件里用PubSub监听toPhone事件

import React, { Component } from 'react'
import PubSub from "pubsub-js"
export default class Phone extends Component {constructor(props) {super(props);//监听toPhone事件PubSub.subscribe("toPhone", (msg, data) => {console.log(`来自于News的消息:${data},监听事件:${msg}`)});}render() {return (<div><p>我是Phone组件</p></div>)}
}

在Home里将News和Phone同时使用(让他俩成为同级标签)

import React, { Component } from 'react'
import News from './News'
import Phone from './Phone'export default class Home extends Component {render() {return (<div><News text={"震惊,某某某竟然****了某某某"} homeSub={this.homeSub} /><Phone/></div>)}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于011 create-react-app 组件之间的数据传递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

C++ RabbitMq消息队列组件详解

《C++RabbitMq消息队列组件详解》:本文主要介绍C++RabbitMq消息队列组件的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. RabbitMq介绍2. 安装RabbitMQ3. 安装 RabbitMQ 的 C++客户端库4. A

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签