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

React中常见Hooks总结

React中常用Hooks总结

1.useState

React中的 useState 其实就相当于Vue中的ref()和reactive() ,生成响应式数据。

在Vue中数据使用响应式对象( Proxy),Vue会对数据进行劫持,当数据发生改变的时候,Vue会调用Render函数对视图进行更新。reat使用下面的setX()函数调用render。

React.js 使用一种称为虚拟 DOM(Virtual DOM)的机制来实现高效的响应式更新。当状态(State)发生变化时,React.js 会重新计算虚拟 DOM 树,并与之前的虚拟 DOM 树进行比较,找出需要更新的部分,然后仅更新这些部分到实际 DOM。这样可以减少对实际 DOM 的操作,提高性能。

const [x, setX] = useState(0)
//使用setX改变x的值
//x的值可以直接使用

2.useRef

useRef 是 React 提供的一个 Hook,用于在函数组件中持有一个可变的引用值,该值在组件的整个生命周期中保持不变,而不会引发重新渲染。一般用来访问和操作 DOM 元素: 使用 useRef 来持有对 DOM 元素的引用,以便直接操作这些元素。也可以用于防抖和节流函数中,存储最后一次执行函数的时间戳或计时器 ID。

const Ref = useRef(null)
<input ref={Ref}/>// Ref.current 就可以定位到这个input组件

3.useMemo

useMemo相当于 Vue 计算属性(computed),用于优化性能,通过在依赖项未发生变化时缓存计算结果,从而避免不必要的重复计算。我们可以使用 useMemo 来缓存一些计算结果,使得只有在依赖项变化时才重新计算。

  • 用途:记忆化某个计算结果,只有在依赖项改变时才重新计算。
  • 返回值:返回的是计算结果的值。
  • 常见用法:用于优化复杂计算或昂贵的计算,以避免每次渲染时都重新计算。

4.useCallback

useCallback 是一个用于性能优化的钩子,它返回一个记忆的回调函数。这对于在子组件中传递回调函数特别有用,可以防止不必要的重新渲染。

  • 用途:记忆化函数,只有在依赖项改变时才返回新的函数实例。
  • 返回值:返回的是记忆化的函数。
  • 常见用法:用于优化传递给子组件的回调函数,避免因函数引用变化导致的子组件不必要重新渲染。

5.useEffect

组件挂载完成之后 或 组件数据更新完成之后 执行 就像vue的onmounted,updated。

6.useReducer

向组件里面添加一个 reducer。建立store的,可以和redux配合使用。

相关文章:

React中常见Hooks总结

React中常用Hooks总结 1.useState React中的 useState 其实就相当于Vue中的ref()和reactive() &#xff0c;生成响应式数据。 在Vue中数据使用响应式对象&#xff08; Proxy&#xff09;&#xff0c;Vue会对数据进行劫持&#xff0c;当数据发生改变的时候&#xff0c;Vue会调…...

linux运维一天一个shell命令之tcpdump详解

一、tcpdump 的概念 tcpdump 是一个数据包捕获工具&#xff0c;能够拦截和显示通过网络接口的数据包。它可以实时捕获数据包&#xff0c;也可以将捕获的数据保存到文件中以便后续分析。tcpdump 支持基于多种条件&#xff08;如 IP 地址、端口号、协议等&#xff09;来捕获特定…...

计算机毕业设计选题推荐-校内跑腿业务系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

6个免费的无损音乐下载网站,建议收藏!

分享6个免费的无损音乐下载网站&#xff0c;都是免费的音乐资源&#xff0c;国内外各种风格的音乐都能找到&#xff01; MyFreeMP3 tools.liumingye.cn/music/ 一个免费的mp3音乐下载网站&#xff0c;里面有丰富的音乐资源&#xff0c;支持在线听歌&#xff0c;也可以下载歌…...

【生成式AI-一-生成式AI到底在说什么】

成式AI到底在说什么 什么是生成式人工智能生成式人工智能、机器学习、深度学习的关系chat-gpt 到底是如何实现对话的&#xff1f; 今天主要来看到底生成式AI是什么&#xff0c;语言模型是如何实现生成这个功能的&#xff1f; 什么是生成式人工智能 现在人工智能能做的事情很多…...

使用Echarts来实现数据可视化

目录 一.什么是ECharts? 二.如何使用Springboot来从后端给Echarts返回响应的数据&#xff1f; eg:折线图&#xff1a; ①Controller层&#xff1a; ②service层&#xff1a; 一.什么是ECharts? ECharts是一款基于JavaScript的数据可视化图标库&#xff0c;提供直观&…...

Resize Observer监测DOM元素尺寸改变的神器

前言 大家在遇到需要监测DOM元素尺寸大小的需求时&#xff0c;可能第一时间想到的都是使用window.addEventListener来监听resize 事件&#xff0c; 但是reize事件会在一秒内触发将近60次&#xff0c;所以很容易在改变窗口大小时导致性能问题。因为它会监听我们页面每个元素的…...

【C++入门(下)】—— 我与C++的不解之缘(二)

前言 接上篇&#xff0c;继续来学习C&#xff0c;本篇内容大概有 引用&#xff0c;inline 和 nullptr。 六、引用&#xff1a; 6.1、引用的定义 引用不是新定义一个变量&#xff0c;而是给已存在的变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它…...

java9-泛型

1.泛型的简介 1.1 什么是泛型 泛型是一种特殊的数据类型。 它是Java 的一个高级特性。在 Mybatis、Hibernate 这种持久化框架&#xff0c;泛型更是无处不在。 在这之前&#xff0c;不管我们在定义成员变量时&#xff0c;还是方法的形参时&#xff0c;都要规定他们的具体类型…...

【协作提效 Go - gin ! swagger】

什么是swagger Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括&#xff1a; API 文档生成&#xff1a;Swagger 可以自动生成详细的 API 文档&#xff0c;包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理…...

Spring DI

01. Spring DI的理解 ●关键字:名词解释 ●DI ( Dependecy Inject&#xff0c;中文释义:依赖注入)是对IOC概念的不同角度的描述&#xff0c;是指应用程序在运行时&#xff0c;每一个| bean 对象都依赖IOC容器注入当前bean 对象所需要的另外一个bean对象。(例如在MyBatis整合Spr…...

Modern C++ 智能指针

Why&#xff1f; 原始指针存在缺陷&#xff0c;不符合现代编程语言的需要。 原始指针的缺陷&#xff1a; 指针指向一片内存&#xff0c;使用者无法得知到底是指向了什么&#xff0c;是数组还是对象&#xff1f;使用完指针是否需要销毁&#xff1f;什么时候销毁&#xff1f;如…...

python爬虫番外篇 | Reuqests库高级用法(1)

文章目录 1.会话对象&#xff08;Session Objects&#xff09;2.请求和响应对象&#xff08;Request and Response Objects&#xff09;3.准备好的请求&#xff08;Prepared Requests&#xff09;4.SSL证书验证5.客户端证书6.CA 证书7.正文内容工作流程&#xff08;Body Conten…...

[BJDCTF2020]The mystery of ip1

flag.php显示ip地址 hint.php查看源码 do you know why i know your ip? 修改请求头X-Forwarded-For&#xff1a;{{system(cat /flag)}} 得到flag...

kafka集群安装

kafka配置 ############################# 服务器基础设置 ############################## broker的ID。每个broker必须设置为一个唯一的整数。 broker.id0############################# 套接字服务器设置 ############################## 套接字服务器监听的地址。如果未配…...

如何使用Alist:多网盘管理神器!一站式挂载、集成管理,支持WebDav

在日常生活中&#xff0c;我们或多或少会使用不同的网盘存储和处理各类文件&#xff0c;这往往导致我们的文件管理繁琐且效率低下。 Alist支持将多种不同的网盘服务集成到一个统一的界面中&#xff0c;让你能够轻松地挂载和管理所有文件。 通过Alist&#xff0c;你可以在一个界…...

文献综述能否帮助研究人员认识特定学术领域的趋势和新兴主题

VersaBot一键生成文献综述 进行良好的文献综述可以成为研究人员识别特定学术领域的趋势和新兴主题的强大工具。就是这样; 1. 识别模式和重复出现的概念&#xff1a; 当您深入研究现有研究时&#xff0c;您自然会开始注意到不同研究中采用的重复出现的主题、想法和方法。这些模…...

SQL注入(闯关游戏)

目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…...

杂谈c语言——3.内存对齐

先看两个例子&#xff1a; typedef struct S {int a;double b;char c; }S;typedef struct B {int a;char b;double c; }B;int main() {printf("S : %d\n", sizeof(S));printf("B : %d\n", sizeof(B));return 0; } 结果为&#xff1a; S:24; B:16&#xff…...

架构师软考-每日两道单选题6

第11题 单选题 在软件系统工具中&#xff0c;版本控制工具属于&#xff08; &#xff09;&#xff0c;软件评价工具属于&#xff08;/&#xff09;。 A 软件开发工具 B 软件维护工具 C 编码与排错工具 D 软件管理和软件支持工具 解析 在软件系统工具中&#xff0c;版本控制工…...

Linux 内核源码分析---块设备

磁盘&#xff08;disk&#xff09;是指利用磁记录技术存储数据的存储器。 磁盘是计算机主要的存储介质&#xff0c;可以存储大量的二进制数据&#xff0c;并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘&#xff08;Floppy Disk&#xff0c;简称软盘&#xff09;…...

提供三方API接口、调用第三方接口API接口、模拟API接口(一)通过signature签名验证,避免参数恶意修改

为什么要设计安全的api接口 运行在外网服务器的接口暴露在整个互联网中&#xff0c;可能会受到各种攻击&#xff0c;例如恶意爬取服务器数据、恶意篡改请求数据等&#xff0c;因此需要一个机制去保证api接口是相对安全的。 本项目api接口安全设计 本项目api接口的安全性主要…...

前端性能优化-webpack构建优化

前言 本文主要总结 webpack 构建优化相关的事情 PS: webpack 的每次更新都会带来很多的新特性&#xff0c;因此学习新知识的时候&#xff0c;不要专注于流程的配置和调参。因为流程终会简化&#xff0c;参数&#xff08;API&#xff09;终会升级。要抓大放小&#xff0c;把精力…...

kafka消息队列(1)

文章目录 概述使用消息队列的场景消息队列--发布订阅消息队列--基本概念和原理1消息队列--基本概念和原理2 小结 概述 消息队列这个并不陌生&#xff0c;所谓消息队列&#xff0c;就是消息队列&#xff08;MessageQueue&#xff0c;简称MQ&#xff09;。 本质是就是个队列&am…...

前缀和专题

板子&#xff1a; &#xff08;占坑&#xff09; Leetcode 238. 除自身以外数组的乘积 优化前&#xff1a;使用前后缀数组记录 class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int n nums.size();vector<int> pre(n, 1),…...

【vulnhub】W1R3S.inc靶机

靶机安装 下载地址&#xff1a;https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 运行环境&#xff1a;vmware 信息收集 靶机发现IP扫描 nmap 192.168.93.0/24 端口扫描,发现开放21、22、80、3306端口 nmap -A 192.168.93.159 -p- 进行目录扫描 dirsearach -u http…...

PostgreSQL学习笔记(上)

PostgreSQL学习笔记(上) 1、基础知识 SQL语言包含4个部分&#xff1a; 数据定义语言(DDL)&#xff1a;DROP、CREATE、ALTER等语句。 数据操作语言(DML)&#xff1a;INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 数据查询语言(DQL)&#xff1a;SELECT语句。 数据控制语…...

探索之路——初识 Vue Router:构建单页面应用的完整指南

目录 1. Vue Router 简介 2. 安装与配置 Vue Router 安装步骤 配置路由 3. 在 Vue 应用中使用路由 4. 进阶使用 路由守卫 懒加载 高级路由技术 嵌套路由 动态路由匹配 编程式的路由导航 路由懒加载 路由元信息 在现代前端开发中,单页面应用(SPA)因其出…...

如何判断机器学习模型的好坏之LIME和SHAP

LIME(Local Interpretable Model-agnostic Explanations)和SHAP(SHapley Additive exPlanations)是两种广泛使用的模型可解释性技术,旨在帮助理解复杂机器学习模型的决策过程。 LIME LIME (Local Interpretable Model-agnostic Explanations) 是一种技术,用于解释任何机…...

干货 | 2024步入数字化转型深水区,云原生业务稳定性如何保障(免费下载)

云原生业务的稳定性保障是一个涉及多个层面的复杂任务&#xff0c;以下是一些关键措施和策略&#xff0c;以确保云原生业务的高效稳定运行&#xff1a; 一、平台安全性评估与加固 云原生平台安全评估&#xff1a;对云原生平台&#xff08;如Kubernetes、Docker等&#xff09;…...

(四)springboot2.7.6集成activit5.23.0之更换数据源

前面学习时&#xff0c;使用的内存数据库H2&#xff0c;实际使用时&#xff0c;一般会替换我们指定的数据库&#xff0c;这个时候要怎么配置呢&#xff1f; 1.查看activiti-spring-boot-starter-basic的spring.factories配置。 2.查看DataSourceProcessEngineAutoConfigurati…...

MySQL数据的增删改查 where 条件查询 基础知识 【3】推荐

操作数据是数据库很重要的一部分&#xff0c;今天整理了下关于MySQL数据库数据的增删改查&#xff0c;包括基础查询、where条件查询、排序、分页、聚合、分组、having以及多表查询&#xff0c;多表查询的直接查询、内连接、外连接以及子查询。方便自己以后查看&#xff0c;也欢…...

linux命令整理(持续更新)

搜索历史记录Ctrl➕R 快速退出当前容器CtrlD 回到开头ctrl a 清屏ctrl l 打开文件 vi 文件 创建一个目录mkdir 文件夹 新建文件touch 文件 把文件1名字改为文件2mv 1 2 上面目录同理&#xff0c;如果第二个目录&#xff0c;则第一个文件移动到目录中 查看当前目录pwd 直接回…...

JavaScript和vue实现左右两栏,中间拖动按钮可以拖动左右两边的宽度

JavaScript实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><title>拖动效果</title><style> body, html {margin: 0;padding: 0;height: 100%;font-family: Arial, sans-serif; }.container {display: flex;height: …...

C++_sizeof的相关知识点

1.指针的大小永远是固定的&#xff0c;取决于处理器位数&#xff0c;32位就是 4 字节&#xff0c;64位就是 8 字节 2.数组作为函数参数时会退化为指针&#xff0c;大小要按指针的计算 int func(char array[]) {printf("sizeof%d\n", sizeof(array));printf("s…...

统信UOS微信常见问题

统信UOS微信常见问题 1. 家庭版如何激活&#xff1f; ①注册Union ID账号 ②绑定微信 ③登录Union ID激活系统 2. 应用商店微信qq下载失败&#xff0c;进行系统更新&#xff0c;提示依赖错误&#xff0c;检查更新失败怎么解决&#xff1f; 问题描述 安装应用商店内的应用无法…...

正则采集器之六——商品管理

将采集到的商品保存到数据库中并在后台系统展示&#xff0c;接下来讲解后端和前端代码。 后端 mapper类&#xff1a; package com.learn.reptile.mapper;import org.apache.ibatis.annotations.Mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.…...

php yii2 foreach中使用事务,事务中使用了 continue

问题描述&#xff1a;使用yii2&#xff0c;在foreach中使用事务&#xff0c;每个循环一个事务&#xff0c;在事务进行判断,然后直接continue,导致后面的循环数据没有保存成功 如下图&#xff1a; 修改后&#xff1a;如下图...

非负数、0和正数 限制最大值且保留两位小数在elementpuls表单中正则验证

一、结构 <el-form-item label="单价:" prop="price"><el-inputv-model.trim="formData.price"placeholder="请输入"@blur="formMethod.fixTwo"><template #append>(元)</template></el-input…...

【Go - 编译:浅尝辄止 】

1&#xff0c;为什么编译 编译 VS 不编译 在Go语言中&#xff0c;你可以选择go build编译代码生成二进制文件&#xff0c;或者直接使用go run命令运行代码。两种方式各有优缺点&#xff0c; 编译&#xff08;go build&#xff09; 优点 性能&#xff1a;编译生成的二进制文…...

java使用opencv

一、windows安装opencv 下载地址&#xff1a;https://opencv.org/releases/ 下载后安装 本人安装目录 目录说明&#xff1a; build&#xff1a;基于windows构建 java&#xff1a;开发关注 x64、x86对应windows操作系统位数 sources&#xff1a;开源源码 二、java使用ope…...

SpringMVC和Spring

1.AOP 1.基础内容 AOP是面向切面的的编程&#xff0c;AOP 是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&#xff09;的一种补充。 面向切面编程&#xff0c;实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术&#xff08;增强代码&#xff09;&…...

用C#和WinForms打造你的专属视频播放器:从多格式支持到全屏播放的完整指南

使用 C# 和 WinForms 创建一个功能齐全的视频播放器&#xff0c;支持 MP4 和 AVI 格式&#xff0c;并具有文件夹导入、多视频播放、全屏切换、视频列表管理等功能&#xff0c;是一个相对复杂的项目。下面我会给出一个基本的实现方案&#xff0c;包括所需的关键功能和相关代码示…...

「漏洞复现」百易云资产管理运营系统 comfileup.php 文件上传漏洞(XVE-2024-18154)

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…...

C:指针学习(1)-学习笔记

目录 前言&#xff1a; 知识回顾&#xff1a; 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结&#xff1a; 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语&#xff1a; 前言&#xff1a; 距离上一次更新关于初…...

【practise】删除有序数组中的重复项

关于博主&#xff1a; 今天分享一道简单的关于“双指针”算法的题目。算是双指针中非常基础的题目&#xff0c;有兴趣可以借鉴一波~ 目录 1.题目介绍2.题解思路&#xff1a;双指针法3.代码示例 1.题目介绍 题目链接&#xff1a;LINK 本题要求是&#xff1a;对给定的有序数组…...

C语言——扫雷游戏

扫雷游戏通常是一个由方格组成的区域内进行的&#xff0c;其中随机分布着一定数量的地雷 。玩家的目标是通过点击方格来标记出所有地雷的位置&#xff0c;同时避免自己点到地雷而导致游戏失败。游戏开始时&#xff0c;玩家通常只能看到一部分方格&#xff0c;而其余的方格则需要…...

安装glibc+mysql的权限问题

安装glibc glibc mysql 俗称绿色mysql 安装之前删掉mariadb: 数据库初始化时候&#xff0c;会⾃动找my.cnf配置&#xff0c;但是原有的mariadb配 置⽂件&#xff0c;会失败 [rootmysql3 ~]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 570 6月 8 2017 /etc/my.cnf [rootm…...

爬虫代理教程:爬虫代理池部署+高并发实现方法

在数据爬取的世界里&#xff0c;代理IP就像是爬虫的隐身衣&#xff0c;帮助我们在网络上自由穿梭&#xff0c;避免被目标网站识别封禁。今天我就来分享一下爬虫代理池的部署和高并发实现的技巧&#xff0c;希望能对大家有所帮助。 什么是爬虫代理池&#xff1f; 首先&#xf…...

C++ 几何算法 - 向量点乘,叉乘及其应用

一&#xff1a;点乘介绍 1. 向量点乘&#xff1a; 2. 向量点乘的性质&#xff1a; 3. 向量点乘公式&#xff1a; 4. 向量的点乘的属性&#xff1a; &#xff08;1&#xff09;&#xff1a;向量与自身做点乘&#xff0c;会得到向量长度的平方&#xff1a; &#xff08;2&#xf…...