当前位置: 首页 > news >正文

React整理总结(三)

1.props和state的更新

  • 父组件重新render时,所有的子组件也会调用render()函数。shouldComponentUpdate(nextProp, nextState)
shouldComponentUpdate(nextProps, nextState) {if (equal(nextProps, this.props) && equal(nextState, this.state)){return false} else {return true;}
}
  • PureComponent。只是对props和state进行了浅层比较
  • React.memo(),针对函数组件

2.ref获取原生DOM

  • 字符串 this.refs.domRef | <div ref="domRef" />
  • 创建ref this.titleRef = React.createRef() | <div ref={this.titleRef} />
  • 函数返回 <div ref={el => this.elRef = el} />
  • ref可以直接获取类组件实例,<MyComponent ref={this.comRef} />
  • ref获取函数式组件,需要使用forwardRef.
const MyComponent = React.forwardRef(function (props, ref){
return <div ref={ref} /> 
})

3.高阶组价

  • 高阶函数:接受函数作为参数或者返回值为函数
  • 高阶组件(HOC):接受组件作为参数,并且返回新组件
    增强props
    配合context使用,传递state
    登录鉴权
    生命周期劫持

4. Portals与Fragment

createPortal(content, target)将content内容挂载到target上

// html的body, 正常内容都是挂在root下
<div id="root"></div>
<div id="modal"></div>// Modal组件
import React, {PureComponent } from “react”;
import { createPortal } from 'react-dom';
export default class Modal extends PureComponent {constructor(props){super(props);}render(){return createPortal(this.props.children, document.querySelector("#modal"));	}
}
  • Fragment, 短语法<></>, 添加key时无法使用短语法

5. 严格模式StrictMode

  • 识别不安全的生命周期
  • 使用过时的ref APi
  • 检查意外的副作用,constructor会被调用两次,生产模式不会
  • 检查废弃的findDOMNode函数
  • 检查过时的context api

相关文章:

React整理总结(三)

1.props和state的更新 父组件重新render时&#xff0c;所有的子组件也会调用render()函数。shouldComponentUpdate&#xff08;nextProp&#xff0c; nextState&#xff09; shouldComponentUpdate(nextProps, nextState) {if (equal(nextProps, this.props) && equa…...

天气这么好,都外出了。顺便了解一下漏桶算法

看到标题&#xff0c;你想到了些什么呢&#xff1f; 又是一个阳光明媚的周末&#xff0c;大家都外出了&#xff0c;路上到处堵车&#xff0c;尤其是各桥梁、隧道入口处&#xff0c;很多车排队等着进入&#xff0c;而出口处就像一个漏桶一样&#xff0c;一辆车接着一辆车有序且…...

【FPGA】Verilog:实现 RS 触发器 | Flip-Flop | 使用 NOR 的 RS 触发器 | 使用 NAND 的 RS 触发器

目录 0x00 RS 触发器&#xff08;RS Flip-Flop&#xff09; 0x01 实现 RS 触发器 0x02 使用 NOR 的 RS 触发器 0x03 使用 NAND 的 RS 触发器 0x00 RS 触发器&#xff08;RS Flip-Flop&#xff09; 触发器&#xff08;Flip-Flop&#xff09;是一种带有时钟的二进制存储设备…...

【技术追踪】SAM(Segment Anything Model)代码解析与结构绘制之Mask Decoder

论文&#xff1a;Segment Anything   代码&#xff1a;https://github.com/facebookresearch/segment-anything 系列篇&#xff1a;   &#xff08;1&#xff09;【技术追踪】SAM&#xff08;Segment Anything Model&#xff09;代码解析与结构绘制之Image Encoder   &am…...

认识Tomcat

文章目录 什么是tomcat&#xff1f;tomcat的使用tomcat的下载tomcat的目录结构tomcat的启动在tomcat上部署页面通过浏览器访问部署的页面 学习servlet的原因 什么是tomcat&#xff1f; 盖棺定论&#xff1a;Tomcat是一个HTTP服务器。 我们接下来要长期学习的东西都是关于前后…...

c语言通信之串口通信

在C语言中&#xff0c;可以使用串口通信、网络通信等多种方式实现计算机之间的通信。其中&#xff0c;串口通信通常用于近距离、低速率的通信&#xff0c;而网络通信则适用于远距离、高速率的通信。 下面以串口通信为例&#xff0c;介绍在C语言中如何实现串口通信。 1.打开串…...

​软考-高级-系统架构设计师教程(清华第2版)【第16章 嵌入式系统架构设计理论与实践(P555~613)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第16章 嵌入式系统架构设计理论与实践&#xff08;P555~613&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图...

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷 2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷A模块基础设施设置/安全加固&#xff08;200分&#xff09;A-1&#xff1a;登录安全加固&#xff08;Windows, Linux&#xff09;A-2&#…...

【Python数据结构与算法】——(线性结构)精选好题分享,不挂科必看系列

&#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏:<<Python数据结构与算法专栏>>&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 时间复杂度大小比较 1.time complexity of algorithm A is O(n^3) while algorithm B is O(2^n). Which o…...

大数据-之LibrA数据库系统告警处理(ALM-12054 证书文件失效)

告警解释 系统在每天二十三点检查当前系统中的证书文件是否失效&#xff08;即当前集群中的证书文件是否过期&#xff0c;或者尚未生效&#xff09;。如果证书文件失效&#xff0c;产生该告警。 当重新导入一个正常证书&#xff0c;并且状态不为失效状态&#xff0c;该告警恢…...

Linux 之 journalctl 查看系统与 kernel 日志

目录 1. Linux 之 journalctl 查看系统与 kernel 日志 1. Linux 之 journalctl 查看系统与 kernel 日志 1 概述 日志管理工具 journalctl 是 centos7 上专有的日志管理工具, 该工具是从 message 这个文件里读取信息。Systemd 统一管理所有 Unit 的启动日志。带来的好处就是, …...

【PTA题目】7-3 冰雹猜想。 分数 10

7-3 冰雹猜想。 分数 10 全屏浏览题目 切换布局 作者 赵静静 单位 浙江工贸职业技术学院 冰雹猜想的内容是&#xff1a;任何一个大于1的整数n&#xff0c;按照n为偶数则除等2&#xff0c;n为奇数则乘3后再加1的规则不断变化&#xff0c;最终都可以变化为1。 例如&#xff…...

springBoot 配置druid多数据源 MySQL+SQLSERVER

1:pom 文件引入数据 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.0</version> </dependency>…...

二叉树的创建与遍历

目录 前言&#xff1a; 二叉树的概念与结构 二叉树的链式存储 二叉树的创建 二叉树的销毁 二叉树结点个数计算 二叉树叶子结点个数计算 二叉树第k层节点个数的计算 二叉树高度的计算 二叉树查找值为x的结点 二叉树的遍历 二叉树的前序遍历 二叉树的中序遍历 二叉树…...

Mysql相关操作命令合集

参考文档&#xff1a;2021-06-25MySQL8.0创建用户和权限控制 - 简书 mysql登陆命令&#xff1a; mysql -u用户名 -p密码; 若遇到复杂密码&#xff0c;包含特殊字符&#xff0c;则需要做转义&#xff08;以下密码为&#xff1a;rootry?elyl!&#xff09;&#xff1a; mysql…...

前端开发学习 (一) 搭建Vue基础环境

一、环境搭建 1、安装nodejs #下载地址 https://nodejs.org/dist/v20.9.0/node-v20.9.0-x64.msi 2、配置环境变量 上面下载完安装包后自行安装&#xff0c;安装完成后安装下图操作添加环境变量 #查看版本 node --version v20.9.0# npm --version 10.1.03、配置npm加速源 np…...

二维码智慧门牌管理系统升级解决方案:查询功能大提升,让地址查找变得轻松便捷!

文章目录 前言一、支持地址名称、小区等信息进行模糊查询二、支持地图上绘制多边形、圆形、矩形进行范围查询三、高效的数据处理能力&#xff0c;保证查询速度四、灵活的应用场景&#xff0c;满足多种需求 前言 随着科技的快速发展和城市化的加速推进&#xff0c;传统的门牌管…...

vite+vue3+electron开发环境搭建

环境 node 18.14.2 yarn 1.22 项目创建 yarn create vite test01安装vue环境 cd test01 yarn yarn dev说明vue环境搭建成功 安装electron # 因为有的版本会报错所以指定了版本 yarn add electron26.1.0 -D安装vite-plugin-electron yarn add -D vite-plugin-electron根目…...

C#入门(9):多态介绍与代码演示

多态性是面向对象编程的一个核心概念&#xff0c;它允许你使用一个父类引用来指向一个子类对象。这可以使程序具有可扩展性&#xff0c;并且可以用来实现一些高级编程技术&#xff0c;如接口、事件、抽象类等。 多态相关的概念 以下是一些在C#中使用多态性的关键概念&#xf…...

可拖动、可靠边的 popupWindow 实现

0 背景 开发要实现一个可以拖动的圆角小窗&#xff0c;要求松手时&#xff0c;哪边近些靠哪边。并且还规定了拖动范围。样式如下&#xff1a; 1 实现 首先把 PopupWindow 的布局文件 pop.xml 实现 <?xml version"1.0" encoding"utf-8"?> <R…...

从if-else到case:一个简单改动让你的FPGA设计时序轻松提升20%?

从if-else到case&#xff1a;一个简单改动让你的FPGA设计时序轻松提升20% 在数字电路设计中&#xff0c;时序优化往往被视为高深莫测的黑魔法&#xff0c;许多工程师花费大量时间研究复杂的流水线设计和重定时技术&#xff0c;却忽略了那些看似微小但效果显著的代码习惯改进。…...

2026年降AI工具出结果格式乱了怎么处理:格式修复完整方案

2026年降AI工具出结果格式乱了怎么处理&#xff1a;格式修复完整方案 提交前三小时查了AI率&#xff0c;82%。 当时脑子嗡的一声。冷静下来开始查资料找方法&#xff0c;前后折腾了大半天&#xff0c;最后靠嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;救回来了&…...

Lumerical入门指南:从网格设置到材料库管理的实用技巧

1. 网格设置&#xff1a;从基础操作到高级技巧 第一次打开Lumerical时&#xff0c;网格设置可能是最让人困惑的部分。记得我刚接触这个软件时&#xff0c;经常因为网格设置不当导致仿真结果异常。网格就像建筑的地基&#xff0c;设置不当会导致整个仿真结构不稳。 在Lumerical中…...

突破音乐格式限制的全方位解决方案:让你的音频文件重获自由

突破音乐格式限制的全方位解决方案&#xff1a;让你的音频文件重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: …...

基于vue3与pinia构建电商核心模块,快马平台实战演练购物车与商品列表

基于vue3与pinia构建电商核心模块&#xff0c;快马平台实战演练购物车与商品列表 最近在做一个电商项目&#xff0c;需要快速搭建商品展示和购物车功能。经过一番调研&#xff0c;我选择了Vue3 Pinia的组合&#xff0c;配合Vue Router实现页面跳转。整个过程在InsCode(快马)平…...

基于下垂控制的光储直流微电网模型 1.模型由光伏和储能以及直流负载组成 2.光伏采用扰动观测法...

基于下垂控制的光储直流微电网模型1.模型由光伏和储能以及直流负载组成 2.光伏采用扰动观测法实现最大功率输出&#xff0c;储能刚开始采用恒定电压控制&#xff0c;电压稳定在额定电压附近&#xff0c;2s之后采用下垂控制&#xff0c;母线电压降低&#xff0c;达到目标光伏板在…...

3步实现飞书文档高效转换:Cloud Document Converter全场景解决方案

3步实现飞书文档高效转换&#xff1a;Cloud Document Converter全场景解决方案 【免费下载链接】cloud-document-converter Convert Lark Doc to Markdown 项目地址: https://gitcode.com/gh_mirrors/cl/cloud-document-converter 一、三大痛点&#xff1a;飞书文档管理…...

深度测评|2026AI短剧出海服务商

2026 年短剧出海进入全球化传播阶段&#xff0c;声画同步与多语种适配成为短剧出海的基础核心能力&#xff0c;更是保障海外受众观剧体验的关键要素。相较于国内市场&#xff0c;海外受众来自不同的语言区域&#xff0c;对多语种配音的自然度、口型同步的精准度、台词翻译的适配…...

LeetCode--454.四数相加 II(哈希表)

题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;num…...

绝版图书购书方案问题(折半枚举 / Meet-in-the-Middle)

绝版图书购书方案问题(折半枚举 / Meet-in-the-Middle) 📚 绝版图书购书方案问题(折半枚举 / Meet-in-the-Middle) 一、题目描述 输入 输出 样例输入 样例输出 提示 二、题目解读 2.1 什么是"购书方案"? 2.2 样例解释 三、算法选择分析 3.1 为什么不能直接用…...