React(5)

embedded/2025/2/13 10:23:21/

组件通信

父子通信

父传子


// 父传子
function Son(props){console.log(props);return(<div>这是子组件  {props.msg}</div>)
}function App() {const msg='父组件数据'const msg2='父组件数据2'return (<div className="App"><Son msg={msg} msg2={msg2}></Son></div>);
}export default App;

1、props能传递任意数据  包括JSX

2、props为只读数据  需要父组件进行修改

3、children  特殊的props

直接在子组件标签内的数据  为children属性

 <Son msg={msg} msg2={msg2}><span>props的children属性</span></Son>function Son(props){console.log(props);return(<div>这是子组件  {props.msg}<div>{props.children}</div></div>)
}

子传父

子组件中调用父组件函数进行传值

子组件的点击事件调用父组件的函数进行修改

需要再父组件中存在这个定义方法,在子组件中传入,使用点击事件调用 应该是4321顺序

兄弟通信 二合一

就是A组件传值给父组件  父组件传值给B组件

import { useState } from "react";// 父传子
function A({ sendMsg }) {const msg = "A组件的msg";return (<div>这是子组件A<button onClick={() => sendMsg(msg)}>传值</button></div>);
}
function B(props) {return <div>这是子组件B {props.Amsg}</div>;
}function App() {const [Amsg, setAmsg] = useState("");const sendMsg = (msg) => {console.log(msg);setAmsg(msg);};return (<div className="App"><A sendMsg={sendMsg}></A><B Amsg={Amsg}></B></div>);
}

跨组件通信

App组件传值给A组件里的B组件

1、使用createContext创建一个上下文对象

2、在顶层组件A中通过Ctx.Provider提供数据

3、在底层组件B中通过useContext钩子函数获取数据

import { createContext, useContext, useState } from "react";
const MsgContext=createContext()function C(){return(<div>这是C组件<D></D></div>)
}
function D(){const Dmsg= useContext(MsgContext)return(<div>这是D组件 {Dmsg}</div>)
}function App() {const appMsg='这是app的数据'return (<div className="App"><MsgContext value={appMsg}><C></C></MsgContext></div>);
}export default App;


http://www.ppmy.cn/embedded/161848.html

相关文章

认购期权卖出相当于平仓吗?

财顺小编本文主要介绍认购期权卖出相当于平仓吗&#xff1f;认购期权卖出并不直接等同于平仓&#xff0c;但卖出认购期权可以是平仓操作的一部分。 认购期权卖出相当于平仓吗&#xff1f; 一、认购期权卖出的含义 卖出认购期权是指投资者作为期权卖方&#xff0c;将认购期权合…

Java全栈项目实战:校园活动摄影平台开发

一、项目背景 随着高校文化活动的日益丰富&#xff0c;传统摄影作品管理方式已无法满足需求。本项目基于Spring BootVue全栈技术体系&#xff0c;打造集活动发布、作品展示、在线投票、版权管理于一体的数字化平台&#xff0c;已成功应用于多所高校的文化节活动管理。 二、技…

rabbitmq详解

有需要的直接看狂神的视频&#xff0c;讲得很好 简介 RabbitMQ 是一个开源的 消息队列中间件&#xff0c;实现了 AMQP&#xff08;Advanced Message Queuing Protocol&#xff0c;先进消息队列协议&#xff09;。它允许 应用程序、服务、系统之间异步地传递消息&#xff0c;并…

蓝桥杯试题:归并排序

一、问题描述 在一个神秘的岛屿上&#xff0c;有一支探险队发现了一批宝藏&#xff0c;这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字&#xff0c;代表了其珍贵程度。然而&#xff0c;由于某种神奇的力量&#xff0c;这批宝藏的顺序被打乱了&#xff0c;探险队…

HiveQL命令(二)- 数据表操作

文章目录 前言一、数据表操作1. 创建表1.1 语法及解释1.2 内部表1.2.1 创建内部表示例 1.3 外部表1.3.1 创建外部表示例 2. 查看表2.1 查看当前数据库中所有表2.2 查看表信息2.2.1 语法及解释2.2.2 查看表信息示例 3. 修改表3.1 重命名表3.1.1 语法3.1.2 示例 3.2 修改表属性3.…

[css] 黑白主题切换

link动态引入 类名切换 css滤镜 var 类名切换 v-bind css预处理器mixin类名切换 【前端知识分享】CSS主题切换方案

Unity使用iTextSharp导出PDF-03显示文本内容

文本内容自动排布 类似GUILayout Chunk 最简单的文本对象 显示文本设置使用的字体&#xff0c;不设置字体&#xff0c;默认使用英文字体设置下划线设置背景色文档中只使用Chunk&#xff0c;文本内容不会自动换行 换行&#xff1a;Chunk.NEWLINE或者"\n" doc.Add…

MATLAB电机四阶轨迹规划考虑jerk、Djerk

1、内容简介 略 126-可以交流、咨询、答疑 2、内容说明 略 在电机控制中&#xff0c;轨迹规划是一个重要的环节&#xff0c;它决定了电机如何从一个状态平滑地过渡到另一个状态。四阶轨迹规划考虑了位置、速度、加速度和加加速度&#xff08;jerk&#xff09;&#xff0c;有…