根据vue学习react
react的函数式组件与vue2是很像的
一、基础类似点
1、组件下拥有一个根节点,vue2是template,react是幽灵标签<>
2、vue2是{{}}以及v-model,react的绑定是{}
3、vue2编译html是v-html,react是{},并且react的jsx中可以直接写标签,不需要学“”
4、vue2中遍历无用标签包裹一般就自己写,但是react幽灵标签不能使用key遍历,这个时候可以使用Fragment、
二、方法类似点
1、点击vue2是@click,react是onClick={} 也是这样的方式
2、vue2的双向绑定是直接的,vue3需要用ref,reactive,react用useState,跟vue3很像
3、(// 这一部分比较麻烦)useState中赋值复杂对象使用set,set(...data, 新参数), 数组操作也需要这样,所以react中用push,slice这些方法非常少,它的方式更类似于微信小程序的setData,data后续是我们需要的值
三、react Hook组件通信学习
1、dom组件,文件引入可以import,但是class必须写className,style需要写style={{width: 100}},比较长的属性依旧还是写驼峰,也可以直接写对象,定义一个样式styleObject,style={styleObject},展开语法,标签中依旧可以使用{...styleObject}
2、组件传值的props,通信
function Article({title, content, active}) {return (<><h4>{title}</h4><div>{content}</div><p>状态:{active? '显示': '隐藏'}</p></>)
}function App() {return (<> <Article title="标题1" content="内容1"></Article><Article title="标题2" content="内容2"></Article></>);
}
3、插槽概念,jsx的值,可以直接接收jsx作为children,不需要想vue2写slot插槽
function List({children}) {return (<ul>{children}</ul>)
}function App() {return (<> <List><li>124</li><li>125</li></List></>);
}
4、 子组件往父组件传值,react也可以style使用三元表达式,返回值这里会可能存在异步的问题,建议用一个参数去保存改变后的内容,然后再向前传递
function Detail({onActive}) {const [status, setStatus] = useState(false)function click() {Promise.resolve().then(()=> {setStatus(status => !status)onActive(!status)})}return (<><button onClick={click}>按钮-{status+''}</button><div style={{display: status? 'block': 'none'}}>154235235</div></>)
}function App() {return (<> <Detail onActive={handleActive}></Detail></>)
}
5、context钩子使用方式
使用React.createContext("")进行定义
<nameContext.Provider value={"ys"}>表明下级子组件可以使用这个值
<nameContext.Consumer>子组件可以直接使用name访问
//组件A
import React from "react";
import B from "./B";
export const nameContext = React.createContext("");
export default function App() {return (<nameContext.Provider value={"ys"}>大家好,<B /></nameContext.Provider>);
}//组件B
import C from "./C";
export default function B() {return (<>我是今天的分享者,<C /></>);
}//组件C
import React from "react";
import { nameContext } from "./App";
export default function C() {return (<nameContext.Consumer>{(name) => <span>我叫{name}</span>}</nameContext.Consumer>);
}链接:https://juejin.cn/post/7028160551079395365
6、useContext可以不需要写标签,直接获取
const name = useContext(nameContext)
四、react的其他钩子函数
1、const [state, dispatch] = useReducer(管理方法,参数),状态管理机制,state是值,dispatch是操作。
2、useRef() 存储值,不会响应式,const a = useRef(),a.current = 1,很像是拷贝,react中也有ref的参数,可以与useRef进行dom绑定以及访问,同样父组件可以通过useImperativeHandle调用子组件方法
const Child = forwardRef(function (props, ref) {useImperativeHandle(ref, () => ({// 暴露出去的方法myFn: () => {console.log("子组件的方法")}}))return (<div>子组件</div>)
})function App() {const child = useRef()function handleActive() {child.current.myFn()}return (<> <Child ref={child}/></>
)
}
3、useEffect副作用钩子,默认会执行几次,相当于vue的watch,但是他是默认监听全部,所以需要设置监听的内容
useMemo进行缓存计算结果,相当于vue的compute,计算属性
4、useCallBack(依赖函数,依赖数组), memo记忆组件
五、CodeGeeX
1、提问函数如何使用
2、帮你解释代码
3、帮你注释
4、帮你解决代码上的bug问题
5、帮你做代码上的测试
六、router里面内容是一样的
常见的router.jsx,provideRouter,使用navigate进行跳转
七、react的生命周期
函数式中:
setup:整个function就是类组件式的render生命周期
componentDiaMount:挂载,useEffect的第二个参数用空数组则不会触发update
componentDiaUpdate:更新,在函数式中用的是useEffect进行更新
componentWillUnmount:销毁组件,在函数式中使用副作用函数的return
function Index() {useEffect(()=>{console.log('useEffect=>老弟你来了!Index页面')return ()=>{console.log('老弟,你走了!Index页面')}},[])return <h2>JSPang.com</h2>;
}
相关文章:
根据vue学习react
react的函数式组件与vue2是很像的 一、基础类似点 1、组件下拥有一个根节点,vue2是template,react是幽灵标签<> 2、vue2是{{}}以及v-model,react的绑定是{} 3、vue2编译html是v-html,react是{},并且react的jsx中…...
Hi3861 OpenHarmony嵌入式应用入门--HTTPD
httpd 是 Apache HTTP Server 的守护进程名称,Apache HTTP Server 是一种广泛使用的开源网页服务器软件。 本项目是从LwIP中抽取的HTTP服务器代码; Hi3861 SDK中已经包含了一份预编译的lwip,但没有开启HTTP服务器功能(静态库无法…...
MICS2024|少样本学习、多模态技术以及大语言模型在医学图像处理领域的研究进展|24-07-14
小罗碎碎念 本期推文主题 今天的会议很多主题都集中在大模型、多模态这两个方面,很明显,这两个方向都是目前的研究热点。 所以,我这一期推文会先简单的分析一下秦文健(中科院)和史淼晶(同济大学)…...
ConfigMap-secrets-静态pod
一.ConfigMap 1.概述 ConfigMap资源,简称CM资源,它生成的键值对数据,存储在ETCD数据库中 应用场景:主要是对应用程序的配置 pod通过env变量引入ConfigMap,或者通过数据卷挂载volume的方式引入ConfigMap资源 官方解释…...
SQL Error: 1406, SQLState: 22001
SQL错误代码1406和SQLState 22001通常表示“列数据过长”错误。这意味着尝试插入或更新列中的值,但该值的长度超过了该列允许的最大长度。 解决此问题的几个步骤: 检查列长度: 确定引起错误的列。检查数据库架构中该列允许的最大长度。 验证…...
【密码学基础】基于LWE(Learning with Errors)的全同态加密方案
学习资源: 全同态加密I:理论与基础(上海交通大学 郁昱老师) 全同态加密II:全同态加密的理论与构造(Xiang Xie老师) 现在第二代(如BGV和BFV)和第三代全同态加密方案都是基…...
Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)
目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...
网络安全法律框架更新:最新合规要求与企业应对策略
网络安全法律框架的最新更新 近期,中国的网络安全法律框架经历了重要的更新。2022年,《网络安全法》迎来了首次修改,这一修订主要是为了与《数据安全法》和《个人信息保护法》等新实施的法律进行衔接协调,完善法律责任制度&#x…...
数仓工具—Hive语法之正则表达式函数
正则表达式函数 之前我们介绍过like rlike regexp 这些关键字,都是和匹配有关的,今天我们介绍一下hive 的REGEXP_REPLACE 和REGEXP_EXTRACT 函数,背景是使用Hive正则表达式函数提取数字 在我的其他文章中,我们已经看到了如何使用Hive正则表达式从字符串中提取日期值。正则…...
WKCTF 2024 easy_heap
很经典的house of orange unsortedbin attack FSOP 变量覆盖 不能 free,那首先想到就是 house of orange泄露Libc基址,然后unsortedbin attack。 但是只能show(8),就不能用largebin的套路来泄露堆地址了,那怎么办呢? …...
SQL 多变关联使用子查询去重
不去重状态 select a.*,b.recon_amt from free_settlement_first aleft join free_settlement_second b on a.settlement_first_id b.settlement_first_id 有2条数据出现了重复 使用子查询去重 select a.*,b.recon_amt from free_settlement_first aleft join free_settlem…...
php表单提交并自动发送邮件给某个邮箱(示例源码下载)
只需要将以下代码内容进行复制即可用到自己的程序/API接口中: <?php if(!empty($_POST[is_post]) && $_POST[is_post]1){$url "https://www.aoksend.com/index/api/send_email";$name $_POST[name];$email $_POST[email];$subject $_POS…...
论文翻译:Large Language Models for Education: A Survey
目录 大型语言模型在教育领域的应用:一项综述摘要1 引言2. 教育中的LLM特征2.1. LLMs的特征2.2 教育的特征2.2.1 教育发展过程 低进入门槛。2.2.2. 对教师的影响2.2.3 教育挑战 2.3 LLMEdu的特征2.3.1 "LLMs 教育"的具体体现2.3.2 "LLMs 教育"…...
7.13实训日志
上午 学习网络安全的过程中,我们深入了解了网络的不同层面和技术,从表层网络到深网再到暗网,以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性,还揭示了如何应对和防范各种网络威胁。 首先,我们…...
【力扣】每日一题—第70题,爬楼梯
题目: 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 思路: 我开始是写了一个函数计算爬一层和爬二层的个数,之后排列求和,但是超范围了,…...
Docker修改国内镜像源
如果docker已将安装好 参考:https://github.com/cmliu/CF-Workers-docker.io sudo mkdir -p /etc/dockercd /etc/dockersudo vim daemon.json #输入以下内容 { "registry-mirrors": ["https://docker.fxxk.dedyn.io"] } #重启docker服务 su…...
安防监控视频平台LntonCVS视频融合共享平台智慧消防实现远程集中视频监控方案
近年来,电力系统内变电站着火事件频发,这对消防安全管理提出了严峻挑战。我国消防安全基础设施不完善、管理机制不健全、应急处置能力不足及公众消防安全意识淡薄等问题,严重制约了消防安全的提升。因此,加强变电站的消防安全管理…...
【大模型LLM面试合集】大语言模型架构_layer_normalization
2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢? 在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来特别困难。Internal Covariat…...
OpenGL笔记八之EBO和EBO绘制流程
OpenGL笔记八之EBO和EBO绘制流程 —— 2024-07-07 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记八之EBO和EBO绘制流程1.EBO2.glDrawElements:如果使用了ebo,最后一个参数可以写03.glDrawElements:如果使用了e…...
maven——(重要)手动创建,构建项目
创建项目 手动按照maven层级建好文件夹,并写上java,测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下,执行: mvn compile 就开始显示下面这些,…...
从白炽灯到LED:聊聊那些“不听话”的非线性元件(附特性曲线解读)
从白炽灯到LED:聊聊那些“不听话”的非线性元件(附特性曲线解读) 记得我第一次用电阻给LED限流时,那颗蓝色LED在我眼前发出"啪"的一声轻响就永远熄灭了。那时我才明白,电路世界里不是所有元件都像电阻那样&q…...
Whisper.cpp 跨平台编译与语音识别实战指南
1. Whisper.cpp 是什么?能做什么? 第一次接触 Whisper.cpp 是在一个语音转文字的需求场景中。当时需要处理大量会议录音,但发现主流的语音识别工具要么需要联网,要么对硬件要求极高。直到发现了这个基于 C 实现的轻量级解决方案&a…...
终极GoogleTest死亡测试指南:如何轻松掌握程序异常退出测试技巧
终极GoogleTest死亡测试指南:如何轻松掌握程序异常退出测试技巧 【免费下载链接】googletest GoogleTest - Google Testing and Mocking Framework 项目地址: https://gitcode.com/GitHub_Trending/go/googletest GoogleTest(Google Testing and …...
从安装到实战:在快马生成项目中体验openclaw本地安装与即时数据抓取
从安装到实战:在快马生成项目中体验openclaw本地安装与即时数据抓取 最近在做一个数据采集的小项目,需要从网站上抓取一些公开信息。经过调研发现openclaw这个工具很适合我的需求,但网上关于它的本地安装和实际应用的完整教程比较少。于是我…...
Kook Zimage真实幻想Turbo常见问题解决:生成全黑图?显存不足?看这篇就够了
Kook Zimage真实幻想Turbo常见问题解决:生成全黑图?显存不足?看这篇就够了 你是不是已经迫不及待地部署好了Kook Zimage真实幻想Turbo,准备大展身手创作奇幻大片,结果一运行,要么生成一张全黑的图片&#…...
深入TC3xx安全机制:从WDT密码访问到Endinit保护,如何构建防误写屏障?
TC3xx芯片安全架构深度解析:Endinit机制与汽车电子功能安全实践 在汽车电子系统设计中,功能安全从来不是可选项而是必选项。随着ADAS和自动驾驶技术的快速发展,ECU的复杂性和安全性要求呈指数级增长。TC3xx系列芯片作为汽车电子领域的核心处…...
jsTree终极指南:从HTML到JSON数据源的完整使用教程
jsTree终极指南:从HTML到JSON数据源的完整使用教程 【免费下载链接】jstree jquery tree plugin 项目地址: https://gitcode.com/gh_mirrors/js/jstree jsTree是一款功能强大的jQuery树形插件,它允许开发者在网页中轻松创建交互式树形结构。无论是…...
seL4通知机制完全指南:高效异步事件处理的终极解决方案
seL4通知机制完全指南:高效异步事件处理的终极解决方案 【免费下载链接】seL4 The seL4 microkernel 项目地址: https://gitcode.com/gh_mirrors/se/seL4 seL4微内核的通知机制是构建高可靠实时系统的核心组件之一,它提供了一种高效、安全的异步事…...
迪卡侬集团2025年净销售额同比增长4.0%至168亿欧元
、美通社消息:2025年,面对瞬息万变的市场环境,迪卡侬集团展现出稳健的经营韧性与持续的战略定力,整体经营表现稳步向好,以当地货币计算,商品交易总额(GMV)同比增长7.1%,净销售额同比增长5.6%&am…...
DJI Payload-SDK实战指南:构建工业级无人机智能载荷的完整方案
DJI Payload-SDK实战指南:构建工业级无人机智能载荷的完整方案 【免费下载链接】Payload-SDK DJI Payload SDK Official Repository 项目地址: https://gitcode.com/gh_mirrors/pa/Payload-SDK 作为系统集成商和解决方案提供商,您是否正在寻找一种…...
