React常见知识点
1. setCount(10)与setCount(preCount => preCount + 10) 的区别:
import React, { useState } from 'react';
export default function CounterHook() {const [count, setCount] = useState(() => 10);console.log('CounterHook渲染');function handleBtnClick() {// 下面这种只会加10setCount(count + 10);setCount(count + 10);setCount(count + 10);setCount(count + 10);// 下面这种会加到40// setCount((prevCount) => prevCount + 10);// setCount((prevCount) => prevCount + 10);// setCount((prevCount) => prevCount + 10);// setCount((prevCount) => prevCount + 10);}return (<div><h2>当前计数: {count}</h2><button onClick={handleBtnClick}>+10</button></div>);
}
2. 如何在父组件中引用子组件的某个元素? forwardRef
// 父组件
import React, { useEffect, useRef } from 'react';
import Product from './product';
export default function App(props) {const liRef = useRef();useEffect(() => {console.log('ref', liRef.current)})return (<><Product ref={liRef} /></>);
}
// 子组件 - 函数组件
import React from 'react';
import { forwardRef } from 'react';
export default forwardRef((props, ref) => {const getProdInfo = function (e) {console.log(e.target.innerText);};return (<ul onClick={getProdInfo}><li ref={ref}>商品1</li><li>商品2</li></ul>);
});
// 子组件 - class组件
import React, { forwardRef } from 'react';
class Product extends React.Component {constructor(props) {super(props);}getProdInfo = function (e) {console.log(e.target.innerText);};render() {console.log(1, this.props)return (<ul onClick={this.getProdInfo}><li ref={this.props.innerRef}>商品1</li><li>商品2</li></ul>);}
}
export default forwardRef((props, ref) => <Product innerRef={ref} {...props} />);
联想:
ref的作用:
- 通过ref操作dom,分为 1.作用在DOM节点上;2作用在组件上(此时为组件的实例);
- 用ref引用一个值;参考官网useRef
3. useImperativeHandle
向父组件暴露一个自定义的 ref 句柄。
默认情况下,组件不会将它们的 DOM 节点暴露给父组件。举例来说,如果你想要 MyInput 的父组件 能访问到 <input> DOM 节点,你必须选择使用 forwardRef。
import { forwardRef } from 'react';const MyInput = forwardRef(function MyInput(props, ref) {return <input {...props} ref={ref} />;
});
在上方的代码中,MyInput 的 ref 会接收到 DOM 节点。然而,你可以选择暴露一个自定义的值。为了修改被暴露的句柄,在你的顶层组件调用 useImperativeHandle。
相关文章:
React常见知识点
1. setCount(10)与setCount(preCount > preCount 10) 的区别: import React, { useState } from react; export default function CounterHook() {const [count, setCount] useState(() > 10);console.log(CounterHook渲染);function handleBtnClick() {//…...
Vue-router路由
配置路由 相当于SpringMVC的Controller 路径然后,跳转到对应的组件 一键生成前端项目文档...
JVM-CMS
when 堆大小要求为4-8G 原理 初始标记:执行CMS线程->STW,标记GC Root直接关联的对象->低延迟 并发标记:执行CMS线程和业务线程,从GC Root直接关联的对象开始遍历整个对象图 重新标记:执行CMS线程->STW&a…...
无涯教程-Flutter - Dart简介
Dart是一种开源通用编程语言,它最初是由Google开发的, Dart是一种具有C样式语法的面向对象的语言,它支持诸如接口,类之类的编程概念,与其他编程语言不同,Dart不支持数组, Dart集合可用于复制数据…...
如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送
最近在写注册功能的自动发送邮箱告知验证码的功能,无奈根本没有学过前端,只有写Qt的qss基础,只好借助网页设计自己想要的邮箱格式,最终效果如下: 也推销一下自己的项目ShaderLab,可运行ShaderToy上的大部分着色器代码&…...
手机无人直播软件在苹果iOS系统中能使用吗?
在现代社交媒体的时代,直播带货已经成为了一种热门的销售途径。通过直播,人们可以远程分享自己的商品,与观众进行互动,增强沟通和参与感。而如今,手机无人直播软件更是成为了直播带货领域的一项火爆的技术。那么&#…...
创建2个线程并执行(STL/Windows/Linux)
C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun1(void) {cout << "one STL thread 1!" << endl; }void thread_fun2(void) {cout << "one STL thread 2!" <…...
Redis可以干什么
Redis可以做什么? 缓存 Redis作为一款高性能的缓存数据库,能够将常用的数据存储在内存中,以提高读写效率。它支持多种数据结构,如字符串、哈希表、列表、集合等,让你可以根据业务需求选择合适的数据结构进行缓存。 …...
R语言+Meta分析;论文新方向
Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…...
实战系列(二)| MybatisPlus详细介绍,包含代码详解
目录 1. MybatisPlus 的基本功能2. 基本用法3. MybatisPlus 的配置4. MybatisPlus 的实体类、Mapper 接口、Service 类和 Controller 类 MybatisPlus 是一个功能强大的 MyBatis 增强工具,它提供了丰富的特性来简化操作数据库的代码。它主要用于简化 JDBC 操作&#…...
横向对比 npm、pnpm、tnpm、yarn 优缺点
前端工程化是现代Web开发中不可或缺的一环,它的出现极大地提升了前端开发的效率和质量。 在过去,前端开发依赖于手动管理文件和依赖,这导致了许多问题,如版本冲突、依赖混乱和构建繁琐等。而今,随着众多前端工程化工具…...
安防监控/视频汇聚/云存储/AI智能视频融合平台页面新增地图展示功能
AI智能分析网关包含有20多种算法,包括人脸、人体、车辆、车牌、行为分析、烟火、入侵、聚集、安全帽、反光衣等等,可应用在安全生产、通用园区、智慧食安、智慧城管、智慧煤矿等场景中。将网关硬件结合我们的视频汇聚/安防监控/视频融合平台EasyCVR一起使…...
机器人中的数值优化(九)——拟牛顿方法(下)、BB方法
本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…...
java 从resource下载excel打不开
GetMapping("/download/template")public void template(HttpServletResponse response) throws IOException {ServletOutputStream outputStream response.getOutputStream();InputStream inputStream null;try {//从resource获取excel文件流inputStream getClas…...
NS2安装及入门实例——(ns2.35 / Ubuntu20.04)
文章目录 一、ns2安装1、更新系统源2、准备工作3、下载安装包4、安装5、问题① 问题1② 问题2③ 问题3 6、安装成功7、环境配置 二、nam安装1、安装2、问题 三、实例 一、ns2安装 1、更新系统源 sudo apt-get update sudo apt-get upgrade2、准备工作 sudo apt-get install …...
平面设计的三大基本元素 优漫动游
平面设计需要美术基础,有美术基础的新人往往能更快完成平面设计岗的转行,在专业培训机构内讲师授课时也会从平面设计的基础——三大基本元素开始。今天就跟大家具体介绍一下平面设计的三大基本元素,让大家知道到底都有哪些。 平面设计的三…...
【电子取证篇】汽车取证检验标准
【电子取证篇】汽车取证检验标准 汽车取证鉴定可能涉及的测试/测量方法—【蘇小沐】 GA/T 976-2012《电子数据法庭科学鉴定通用方法》; GA/T 1998-2022《汽车车载电子数据提取技术规范》; GA/T 1999.2-2022《道路交通事故车辆速度鉴定方法 第2部分&…...
【元宇宙】游戏应用商城对元宇宙的影响
游戏行业不仅是创意设计原则的信息源,还是构建“下一代互联网”的基础技术。它也是元宇宙的经济活动先例。 究竟为什么会认为应用商城设置的30%佣金将导致元宇宙“无法实现”呢?有三个核心原因。首先,应用商城阻止了企业对元宇宙的投资&…...
win10-docker-mysql镜像安装运行基础
win10-docker-mysql镜像安装运行基础 文章目录 win10-docker-mysql镜像安装运行基础一、搜索可用镜像1.1 查询mysql镜像1.2 确定镜像版本号 二、运行mysql容器2.1 进入mysql2.2 测试mysql是否正常 三、将mysql数据存储目录映射到宿主机做持久化 一、搜索可用镜像 1.1 查询mysq…...
VirtualBox7+Ubuntu22集群规划
1. 目的: 新入手了一台小主机(8核 / Intel(R) Xeon(R) W-10885M CPU 2.40GHz 2.40 GHz, 16vCpu / 64G RAM / 系统类型 64 位操作系统, 基于 x64 的处理器),原装了一套Win11专业版,打算用VirtualBox 虚拟一个集群。 2. …...
Python点云数据处理避坑指南:pypcd与pypcd4库在Ubuntu下的安装与实战对比
Python点云数据处理避坑指南:pypcd与pypcd4库在Ubuntu下的安装与实战对比 在3D视觉、自动驾驶和机器人开发领域,点云数据处理是基础而关键的环节。Ubuntu作为主流的开发环境,配合Python生态中的pypcd和pypcd4库,为工程师提供了高…...
JiYuTrainer:在极域电子教室中重获电脑控制权的终极方案
JiYuTrainer:在极域电子教室中重获电脑控制权的终极方案 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在机房上课时,被极域电子教室的全屏广播困…...
如何用ComfyUI-Impact-Pack实现AI图像精细化处理:从面部修复到高分辨率增强的完整指南
如何用ComfyUI-Impact-Pack实现AI图像精细化处理:从面部修复到高分辨率增强的完整指南 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, …...
3分钟快速上手:Tsukimi打造你的个人Jellyfin媒体中心
3分钟快速上手:Tsukimi打造你的个人Jellyfin媒体中心 【免费下载链接】tsukimi A simple third-party Jellyfin client for Linux 项目地址: https://gitcode.com/gh_mirrors/ts/tsukimi 还在为复杂的媒体播放器设置而烦恼吗?Tsukimi这款简单易用…...
别再硬算方程了!用Zemax的‘傻瓜式’方法搞定三片摄影物镜设计
颠覆传统:用Zemax高效设计三片摄影物镜的实战指南 在光学设计领域,三片摄影物镜一直被视为经典案例,它既包含了基础光学原理的精髓,又能满足实际摄影需求。然而,传统设计流程中繁琐的方程求解和反复试错让许多工程师望…...
Tomcat 超精简总结
1. 定位轻量级 Java Web 服务器 / Servlet 容器只跑 Java 项目(jsp、servlet、springboot 内嵌)处理 动态请求,不擅长静态资源2. 核心作用解析 Servlet、JSP监听端口,接收浏览器请求调用 Java 代码执行业务返回页面 / 数据给客户端…...
OpCore-Simplify:如何30分钟完成专业级黑苹果配置
OpCore-Simplify:如何30分钟完成专业级黑苹果配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗&#x…...
本地视频怎么去水印?2026年实测去水印方法和软件推荐指南
为什么本地视频需要去水印 无论是从社交平台保存下来的视频,还是朋友转发的素材,视频上的水印往往会影响观看体验。特别是对于内容创作者而言,需要将多个平台的素材进行二次创作时,去除水印成了必不可少的环节。本地视频去水印不仅…...
多模态大模型微调为什么一上图文交错数据就开始视觉退化:从 Modality Collapse 到 Progressive Unfreeze 的工程实战
一、视觉退化并非个例 在多模态大模型(VLM)指令微调阶段,一个反复出现的现象是:模型经数万条图文交错样本训练后,面对纯视觉任务准确率反而下降,生成描述越来越偏向文本先验,甚至出现"看图…...
告别环境冲突!用Miniconda3在Windows上为不同Python项目创建独立开发环境(保姆级图文)
告别Python环境冲突:Miniconda3在Windows下的高效开发环境管理实战 刚接手新项目的Python开发者小王遇到了一个典型问题:本地运行良好的Django 3.2项目,在同事电脑上却频频报错。经过排查,发现是Python环境版本不一致导致的依赖冲…...
