React hooks——useCallback

一、简介

useCallback 是 React 提供的一个 Hook,用于缓存函数引用,避免在组件重新渲染时创建新的函数实例,从而优化性能。

1.1 基本语法

const memoizedCallback = useCallback(() => {// 函数逻辑},[dependencies] // 依赖项数组
);
  • 第一个参数:要缓存的函数

  • 第二个参数:依赖项数组,只有当依赖项变化时,才会重新创建函数

1.2 主要特点

✅ 缓存函数:避免每次渲染时都创建新的函数
✅ 优化子组件渲染:配合 React.memo 使用,防止因父组件更新导致子组件不必要的重新渲染
✅ 依赖项控制:只有依赖项变化时,才会重新生成函数

二、代码实现

import { memo, useState, useCallback } from "react";// 子组件
const Input = memo(({ onChange }) => {console.log("子组件重新渲染了");return (<div><input type="text" onChange={(e) => onChange(e.target.value)}></input></div>);
});export default function App() {// 触发父组件渲染的函数const [count, setCount] = useState(0);const [count2, setCount2] = useState(0);// 传给子组件的函数const changeHandler = useCallback((value) => console.log(value), [count2]);return (<div><Input onChange={changeHandler}></Input><button onClick={() => setCount(count + 1)}>点我 子组件不会重新渲染</button><button onClick={() => setCount2(count2 + 1)}>点我 子组件重新渲染</button></div>);
}

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

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

相关文章

跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer

目录 一、从深度学习到边缘部署&#xff0c;手势识别的新突破 &#xff08;一&#xff09;可穿戴设备 边缘计算 个性化医疗新可能 &#xff08;二&#xff09;肌电信号&#xff08;sEMG&#xff09;&#xff1a;手势识别的关键媒介 &#xff08;三&#xff09;挑战&#…

无线调制的几种方式

不同的调制方式在 频谱效率、抗干扰能力、功耗、实现复杂度 等方面存在显著差异。以下是主要调制方式的对比分析&#xff1a;一、调制方式的核心区别调制方式原理频谱效率抗干扰能力功耗典型应用AM改变载波振幅低差&#xff08;易受噪声影响&#xff09;较高广播电台FM改变载波…

五分钟系列-网络性能测试工具iperf3

目录 一、iperf3 是什么&#xff1f; 二、为什么需要 iperf3&#xff1f; 三、iperf3 的主要测量指标 四、安装 iperf3 五、基础使用模式&#xff08;命令行参数示例&#xff09; 1. 启动 Server 端 (必须) 2. 启动 Client 端进行测试 (最常见) 基本 TCP 测试 (10秒) …

LiFePO4电池的安全详解

一、电池的制作过程 锂离子电池的五大核心组成部分:正极、负极、电解液、隔膜和外壳。 正极:把正极材料(如LiFePO₄)+ 导电剂(如炭黑)+ 粘结剂(如PVDF)混合成浆料,涂覆在铝箔上,然后烘干、辊压。 负极:把负极材料(如石墨)+ 导电剂 + 粘结剂混合成浆料,涂覆在铜…

S7-200 SMART PLC: SMART 200 CPU 密码设置及权限设置方式

在工业自动化控制中&#xff0c;SMART 200 CPU 的安全稳定运行直接关系到整个系统的可靠运作&#xff0c;而组态系统安全则是保障 SMART 200 CPU 安全的核心环节。通过合理设置密码及相关安全参数&#xff0c;能为 SMART 200 CPU 构建一道坚固的防护屏障&#xff0c;有效保护用…

Datawhale AI数据分析 作业

一、 贷款批准预测数据集1. 数据探索与理解prompt 1:这是训练数据&#xff0c;目的是贷款批准预测数据集上训练的深度学习模型生成的数据&#xff0c;旨在使用借款人信息预测贷款批准结果&#xff0c;它通过模拟真实贷款审批场景&#xff0c;帮助金融机构评估借款人风险。 请展…

100条常用SQL语句

一、基本查询语句 查询所有数据&#xff1a; SELECT * FROM 表名; 查询特定列&#xff1a; SELECT 列名1, 列名2 FROM 表名; 条件查询&#xff1a; SELECT * FROM 表名 WHERE 条件; 模糊查询&#xff1a; SELECT * FROM 表名 WHERE 列名 LIKE ‘模式%’; 排序查询&#xff1a; …

Visual Studio编译WPF项目生成的文件介绍

文章目录一、Summarize主要输出文件1. **可执行文件 (.exe)**2. **程序集文件 (.dll)**3. **PDB 文件 (.pdb)**资源与配置文件1. **XAML 编译文件 (.baml)**2. **资源文件 (.resources)**3. **应用程序配置文件 (.config)**依赖文件1. **引用的 NuGet 包**2. **引用的框架程序集…

「Chrome 开发环境快速屏蔽 CORS 跨域限制详细教程」*

Chrome 开发环境快速屏蔽 CORS 跨域限制【超详细教程】 &#x1f4e2; 为什么需要临时屏蔽 CORS&#xff1f; 在日常前后端开发中&#xff0c;我们经常会遇到这样的报错&#xff1a; Access to fetch at https://api.example.com from origin http://localhost:3000 has been …

Linux命令大全-df命令

一、简介df&#xff08;英文全拼&#xff1a;display free disk space&#xff09; 命令用于显示或查看文件系统&#xff08;或磁盘&#xff09;的空间使用情况&#xff0c;包括总容量、已用空间、可用空间、使用率和挂载点等信息。二、语法df [选项]... [文件]...参数参数说明…

《程序员修炼之道》第一二章读书笔记

最近在看《程序员修炼之道&#xff1a;通向务实的最高境界》这一本书&#xff0c;记录一下看书时的一点浅薄感悟。务实程序员不仅是一种技能水平的体现&#xff0c;更是一种持续修炼、不断反思并主动承担责任的过程。对自己的行为负责是务实哲学的基石之一。在重构CRM时面对文档…

ArcGISPro应用指南:使用ArcGIS Pro创建与优化H3六边形网格

H3 是由 Uber 开发的一个开源地理空间分析框架&#xff0c;旨在通过将地球表面划分为等面积的六边形网格来支持各种地理空间数据分析任务。每个六边形单元在 H3 系统中都有一个独一无二的标识符&#xff0c;即 H3 指数。这种网格系统不仅能够覆盖全球&#xff0c;而且适用于任何…

xss-dom漏洞

目录 靶场搭建 第一关 第二关 第三关 第四关 第五关 第六关 第七关 第八关 靶场下载地址&#xff1a;https://github.com/PwnFunction/xss.pwnfunction.com 靶场搭建 将文件用clone 下载到ubuntu&#xff0c; 然后进入 cd xss.pwnfunction.com/hugo/ 这个目录下 hu…

BPE(字节对编码)和WordPiece 是什么

BPE(字节对编码)和WordPiece 是什么 BPE(字节对编码)和WordPiece 是自然语言处理中常用的子词分词算法,它们通过将文本拆分为更小的语义单元来平衡词汇表大小和表达能力。 BPE(Byte Pair Encoding,字节对编码) 原理 初始化:将文本按字符(或Unicode字节)拆分为最小…

Java行为型模式---状态模式

状态模式基础概念状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是允许对象在内部状态发生改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。状态模式将状态相关的行为封装在独立的状态类中&#xff0c;并将状态转换逻辑…

重学Framework Input模块:如何实现按键一键启动Activity-学员作业

需求背景&#xff1a; 近来vip群里学员朋友有问道一个需求&#xff0c;大概需求就是他们做TV的Framework开发&#xff0c;想要遥控器有一个新定义的儿童节目按键&#xff0c;想要实现这个按键按下后就跳转到儿童节目的Activity。需求拆解及作业要求&#xff1a; 针对上面需求&a…

bmp图像操作:bmp图像保存及raw与bmp转换

1. 保存bmp图像&保存一张正弦图像到D:\1.bmp /********************************************** * fileName bmpinc.h * brief 对bmp文件的操作&#xff0c;包括&#xff1a; * - saveBmp&#xff1a;保存bmp文件 * - Save…

SpringAI——提示词(Prompt)、提示词模板(PromptTemplate)

Prompt 是引导 AI 模型生成特定输出的输入格式&#xff0c;Prompt 的设计和措辞会显著影响模型的响应。最开始Prompt只是单纯的文本文字&#xff0c;后面可以包含占位符&#xff0c;可以识别消息的角色。比如包含占位符的Prompt,也就是我们讲的消息模板(PromptTemplate)&#x…

【深度学习笔记 Ⅰ】5 参数和超参数

在深度学习中&#xff0c;参数&#xff08;Parameters&#xff09; 和 超参数&#xff08;Hyperparameters&#xff09; 是模型训练中两个核心概念&#xff0c;它们共同决定了模型的性能&#xff0c;但作用方式和优化方法截然不同。以下是详细对比与解析&#xff1a;1. 参数&am…

Linux 阻塞等待框架

在 Linux 设备驱动开发中&#xff0c;阻塞机制 是处理资源暂时不可用&#xff08;如设备未准备好数据、缓冲区满等&#xff09;的核心手段。驱动程序可以将被阻塞的进程设置成休眠状态&#xff0c;然后&#xff0c;在资源可用后&#xff0c;再将该进程唤醒。 在 Linux 驱动开发…