前言:

        react中父子数据流动和事件互相调用,父组件给子组件数据,父组件调用子组件的事件,同理,子也可以调用父的数据和传值。

react是单向数据流,具体使用跟vue是不同的。

1、父组件的数据传给子组件,使用props,也就是{}

可以看到vue的数据绑定是v-bind,简写{{}}

react的数据也是props传值接收,简写就是{}

//引入子组件
import { Line as LineEchart } from "@/components/echarts";//定义变量,一种是hook的useState,另一种是直接定义变量
const [dealOpt, setDeal] = useState({});
const echartStyle = {height: 50,
};// option绑定我们的变量,用{}绑定变量
<LineEchart option={dealOpt} style={echartStyle} />
//子组件内部定义方法的时候,参数直接写在方法上面function Line({ theme = "light", style = {}, option = {} }) {....
}// memo是提高性能的hook函数
export default memo(Line, (prev, next) => prev.option === next.option);

2、父组件调用子组件内部的函数方法

通过ref来调用,具体要用到useRef + forwardRef + useImperativeHandle

vue的也是ref,不过直接用refs调用子级方法

父级组件内部,用ref来调用
import { useRef } from 'react'; //useRef 是ref的方法
import Child from './Child'; //引入子组件// 函数内部
// 默认定义ref,然后绑定到dom元素const childRef = useRef();const triggerChildMethod = () => {childRef.current.childMethod(); // 调用子组件方法,childRef.current
};return (<div><button onClick={triggerChildMethod}>点我触发事件</button><Child ref={childRef} /></div>
);
对应的子组件内部,forwardRef+useImperativeHandle 
import { forwardRef, useImperativeHandle } from 'react';const Child = forwardRef((props, ref) => {useImperativeHandle(ref, () => ({childMethod: () => {console.log("Child method called!");},}));return <div>Child Component</div>;
});

3、子给父传事件

vue的话,就是用$emit/defindEmit的方法

react的话,用回调函数,也是用{}来绑定

父级内部接收
import { useState } from 'react';
//用hook里面的useState定义变量childData
const [childData, setChildData] = useState('');// 定义父的事件
const handleDataFromChild = (data) => {setChildData(data); // 接收子组件的数据
};//onSendData是子给父的方法名return (<Child onSendData={handleDataFromChild} />});
子级发送
const sendData = () => {onSendData("Hello from Child"); // 调用父组件的回调函数,onSendData
};return <button onClick={sendData}>点击</button>;

4、跨层调用,父给子孙任意一级传值,或孙改父的数据,

vue的话,vuex或者eventBus

react用hook里面的createContext

父组件:
// 1. 创建 Context
import { createContext, useContext, useState } from 'react';const DataContext = createContext();// 2. 父组件提供数据
function Parent() {const [data, setData] = useState("我是默认数据");return (<DataContext.Provider value={{ data, setData }}>//Child 代表子组件,至于子嵌孙不用DataContext.Provider<Child /></DataContext.Provider>);
}
孙组件:
//data是我们的默认值,setData 可以修改这个默认值的事件
const { data, setData } = useContext(DataContext);return (<button onClick={() => setData("Updated Data")}>更改父内容: {data}</button>
);

5、redux来调用不同层级组件的事件与数据

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杰理手表-增加提示音-提示音音量调整--使用提示音

本章节非常详细的介绍这个提示音的增加-调整-使用&#xff0c;其余耳机包之类的也是差不多的&#xff01;&#xff01; 目录 1.添加自己需要用的提示音 2.根据添加的提示音-代码中配置 1.在tone_player.h中枚举里添加本次提示音的名称 2.把定义好的提示音放到tone_player.…

数据库的基本操作(视图,存储,触发器)

1、视图&#xff08;1&#xff09;什么是视图视图是虚拟表&#xff0c;是基于查询结果的可视化表&#xff0c;视图的作用有&#xff1a;①简化复杂查询 ②限制数据访问 ③提供数据独立性 ④汇总数据&#xff08;2&#xff09;怎么创建视图创建视图 CREATE OR REPLACE VIEW 视图…

Pytest项目_day13(usefixture方法、params、ids)

usefixture 我们还可以使用mark.usefixtures来调用fixture 这样相比在传入参数处调用fixture&#xff0c;会更加直接 但是如果我们在一个测试用例中使用了多个usefixtures&#xff0c;那么测试用例会先调用离他最近的那个fixtureparams fixture中还可以带参数 当我们用request.…

Rust 异步生态实战:Tokio 调度、Pin/Unpin 与零拷贝 I/O

&#x1f31f; Hello&#xff0c;我是蒋星熠Jaxonic&#xff01; &#x1f308; 在浩瀚无垠的技术宇宙中&#xff0c;我是一名执着的星际旅人&#xff0c;用代码绘制探索的轨迹。 &#x1f680; 每一个算法都是我点燃的推进器&#xff0c;每一行代码都是我航行的星图。 &#x…

通用 maven 私服 settings.xml 多源配置文件(多个仓库优先级配置)

<?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.…

AT F-Intervals 题解

简化题意&#xff1a; 有 nnn 个区间&#xff0c;保证所有区间同时覆盖一个点&#xff0c;每次将区间平移一个单位&#xff0c;问使得区间两两不交的最小操作数&#xff08;端点处可重叠&#xff09;。n≤5000。l,r≤231−1n\leq 5000。l,r\leq 2^{31}-1n≤5000。l,r≤231−1。…

《飞算Java AI:从安装到需求转实战项目详细教学》

前引&#xff1a;在当今快速发展的技术环境中&#xff0c;人工智能&#xff08;AI&#xff09;与编程语言的结合为开发者提供了前所未有的便利。飞算Java AI作为一款智能化编程工具&#xff0c;能够显著提升Java开发效率&#xff0c;减少重复性工作&#xff0c;并帮助开发者更专…

6深度学习Pytorch-神经网络--过拟合欠拟合问题解决(Dropout、正则化、早停法、数据增强)、批量标准化

过拟合、欠拟合 在机器学习和深度学习中&#xff0c;过拟合&#xff08;Overfitting&#xff09;和欠拟合&#xff08;Underfitting&#xff09;是模型训练过程中常见的两种问题&#xff0c;直接影响模型的泛化能力&#xff08;即对未见过的数据的预测能力&#xff09;。 1. 欠…

新手向:Python编写简易翻译工具

Python 编写简易翻译工具&#xff1a;从零开始入门指南对于刚接触编程的新手来说&#xff0c;编写一个实用的工具是快速入门的好方法。本文将详细介绍如何用 Python 编写一个简易的翻译工具&#xff0c;帮助理解基础编程概念和实际应用。无需任何编程基础&#xff0c;只需按照步…

爬虫与数据分析结和

任务描述 爬取目标&#xff1a;高三网中国大学排名一览表&#xff0c;网址为 2021中国的大学排名一览表_高三网。爬取内容&#xff1a;学校名称、总分、全国排名、星级排名、办学层级。数据存储&#xff1a;爬取后的数据保存在 CSV 文件中。 代码实现&#xff08;爬取&#xff…

linux下安装php

1.php官网下载所需要的php版本 下载php 2.将下载好的压缩包上传至linux服务器&#xff0c;解压并配置 tar -xzvf php-8.4.11.tar.gz cd php-8.4.11 ./configure --prefix/home/admintest/php/php-8.4.11 # 配置安装路径和选项 make sudo make install3.使用make命令编译完成…

nurbs曲线的matlab

基于MATLAB的NURBS曲线生成与可视化程序 %% NURBS曲线生成与可视化 clc; clear; close all;%% 基本参数设置 degree 3; % 曲线阶数 (degree k-1, k为控制点数) numCtrlPts 6; % 控制点数量 weights ones(1, numCtrlPts); % 权重向量&#xff08;可调整&#…

AWS WAF防护机制深度研究:多模式验证与绕过技术解析

AWS WAF防护机制深度研究&#xff1a;多模式验证与绕过技术解析 技术概述 AWS WAF&#xff08;Web Application Firewall&#xff09;作为亚马逊云服务的核心安全组件&#xff0c;为Web应用提供了多层次的防护机制。该系统基于先进的机器学习算法和规则引擎&#xff0c;能够实…

嵌入式 - Linux软件编程:文件IO

一、概念标准IO是有缓存的IO&#xff0c;文件IO没有缓存&#xff0c;适合于通信、硬件设备操作标准IO是库函数&#xff0c;文件IO是系统调用文件 IO 与标准 IO&#xff08;基于 C 库函数的 IO&#xff09;是 Linux 中两种主要的 IO 方式&#xff0c;二者的核心差异如下&#xf…

ESP32 MQTT对接EMQX本地服务器

文章目录一、搭建EMQX本地MQTT服务器1.1 下载1.2 使用二、MQTT.fx安装使用2.1 破解及安装2.2 客户端界面说明2.3 与 WebSocket 客户端互发消息2.3.1 使用MQTT.fx连接到EMQX本地服务器1.General设置2.User Credentials设置3.进行连接2.3.2 MQTT.fx发布和订阅主题1.发布主题2.订阅…

【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)

文章目录 第 2 章:环境搭建 —— 准备你的开发工具 2.2 验证安装(`node -v`、`npm -v`命令使用) 一、基础验证命令解析 二、基础验证场景案例 案例 1:首次安装后的基础验证 案例 2:检查版本兼容性 三、进阶场景案例 案例 3:在脚本中动态获取 Node.js 版本 案例 4:在 npm…

【虚拟机】VMwareWorkstation17Pro安装步骤

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 工作中时常会遇到各种各样的系统&#xff0c; 需要做各种测试&#xff0c; 比如要验证某个软件在某个系统版本上是否适配&#xff0c; 这时候将自己的电脑系统换成要测试的系统就会比较麻烦。 这时候使用虚拟机就…

C语言库中的字符函数

目录 求字符串长度 认识strlen 自主实现strlen 字符串拷贝 认识strcpy 自主实现strcpy strncpy 字符串拼接 认识strcat 自主实现sracat strncat 字符串大小比较 认识strcmp 自主实现strcmp strncmp 字符串中寻找子字符串 认识strstr 自主实现strstr 根据符号…

学习日志31 python

1 x, y y, x 是合法的,这是Python的特色语法x, y y, x 是 Python 中一种非常简洁且实用的特色语法&#xff0c;用于交换两个变量的值。这种语法的优势在于&#xff1a;无需额外的临时变量即可完成交换操作代码简洁易读&#xff0c;一眼就能理解其目的执行效率高&#xff0c;在…

Mac配置服务器工具Royal TSX

Royal TSX是mac上类似xshell的工具&#xff0c;可以远程连接服务器、连接ftp等 下载Royal TSX 官网&#xff1a;Royal TSX 下载插件 在设置中的插件市场plugins中下载需要的插件 例如 远程shell插件&#xff1a;Terminal ftp插件&#xff1a;File Transfer 新建一个文档 开…