React-hooks: useCallback

useCallback文档

https://react.docschina.org/reference/react/useCallback 是一个允许你在多次渲染中缓存函数的 React Hook。

const cachedFn = useCallback(fn, dependencies)
参数
  • fn:想要缓存的函数。此函数可以接受任何参数并且返回任何值。React将会在初次渲染而非调用时返回该函数。当进行下一次渲染时,如果 dependencies 相比于上一次渲染时没有改变,那么React将会返回相同的函数。否则,React将返回在最新一次渲染中传入的函数,并且将其缓存以便之后使用。React不会调用此函数,而是返回此函数。你可以自己决定何时调用以及是否调用。
  • dependences :有关是否更新fn的所有响应式值 的一个列表。响应式值包括props、state,和所有在你组件内部直接声明的变量和函数。如果你的代码检查工具配置了React,那么它将校验每一个正确指定为依赖的响应式值。依赖列表必须具有确切数量的项,并且必须像[dep1, dep2, dep3]这样编写。React使用 Object.is 比较每一个依赖和它的之前的值。
返回值

在初次渲染时,useCallback 返回你已经传入的 fn 函数;
在之后的渲染中,如果依赖没有改变,useCallback 返回上一次渲染中缓存的 fn 函数;否则返回这一次渲染传入的 fn。

示例
import { useCallback,memo, useState } from "react";// memo 缓存Child组件,只有 props 发生改变时,才会重新渲染
const Child = memo(function ({onClick}) {console.log('子组件重新渲染了');return (<button onClick={onClick}>子组件</button>)
})export default function App() {const [count, setCount] = useState(1);function handleUpdate() {setCount(count + 1);}// useCallback 缓存handleClick函数,只有后边依赖项变更时,才会返回新函数 const handleClick = useCallback(function () {console.log('点击了子组件更新');}, []);return (<><div>当前值:{count}</div><button onClick={handleUpdate}>变更值</button><br /><Child onClick={handleClick}/></>)   
}

在这里插入图片描述

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

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

相关文章

C语言游戏实现——贪吃蛇

思路讲解 ** 贪吃蛇游戏是要求我们要操控一条蛇&#xff0c;在游戏规定的空间之内&#xff0c;进行吃食物&#xff0c;吃到一个就增加蛇身的长度&#xff0c;并且游戏得分加1&#xff0c;如果吃到自己&#xff0c;和碰到墙就算死亡&#xff0c;同时可以增加蛇的速度和减慢蛇的…

VideoComposer: Compositional Video Synthesis with Motion Controllability

decompose videos into three distinct types of conditions: textual conditions, spatial conditions, temperal conditions 条件的内容&#xff1a; a. textual condition: coarse grained visual content and motions, 使用openclip vit-H/14的text encoder b. spatial co…

docker 虚拟化与docker的概念

一、云计算的三种服务模式 laas、pass、saas 1.1 IaaS: Infrastructure-as-a-Service&#xff08;基础设施即服务&#xff09; 第一层叫做IaaS&#xff0c;有时候也叫做Hardware-as-a-Service&#xff0c;几年前如果你想在办公室或者公司的网站上运行一些企业应用&#xff0c…

最大神经系统Hala Point正式亮相,AI算力新标杆诞生!

英特尔宣布推出 Hala Point 前言 就在近日&#xff0c;英特尔公司宣布推出了目前以来最大的神经系统Hala Point。目前看来该系统将用于支持未来的、受大脑启发的AI研究项目&#xff0c;解决与AI模型可持续性相关的挑战等任务上。那么Hala Point究竟有什么魅力呢&#xff1f;我们…

这就叫专业,安防监控领域的可视化效果走一波!

设计安防监控领域的可视化大屏时&#xff0c;需要考虑以下几个方面&#xff1a; 显示实时监控画面&#xff1a; 将监控摄像头的实时画面显示在大屏上&#xff0c;以便实时观察和监控各个区域的情况。可以使用分割屏幕的方式&#xff0c;同时显示多个监控画面。 报警和事件显示…

网络工程师的网络故障排除方法(非常详细)零基础入门到精通,收藏这一篇就够了

网络故障是在日常工作中经常会遇到的问题&#xff0c;尤其是对于那些经常需要和网络打交道的网络工程师们&#xff0c;对于他们而言&#xff0c;如何才能快速进行网络故障的排查、及时解决网络问题呢&#xff1f;接下来我们来讲讲网络排障的基本思路。 一、首先需要熟悉OSI七层…

接口测试和Mock学习路线(上)

一、接口测试和Mock学习路线-第一阶段&#xff1a; 掌握接口测试的知识体系与学习路线掌握面试常见知识点之 HTTP 协议掌握常用接口测试工具 Postman掌握常用抓包工具 Charles 与 Fiddler结合知名产品实现 mock 测试与接口测试实战练习 1.接口协议&#xff1a; 需要先了解 O…

msvcr120.dll文件缺失的相关修复方法分享,有一键修复msvcr120.dll的方式

关于msvcr120.dll文件缺失的缺失&#xff0c;其实网上已经有很多的方法了&#xff0c;但是有很多事不靠谱的&#xff0c;或者是讲得不太清楚的&#xff0c;所以小编觉还是有需要来给大家详细的讲解一下msvcr120.dll文件缺失的相关修复方法&#xff0c;好了废话不多说&#xff0…

后端工程师——Java工程师招聘要求

后端工程师隶属于软件研发工程师,是从事软件开发相关工作人员,其主要职责是 平台设计、接口设计 和 功能实现。作为后端人员,有很多的就业机会,根据你的编程语言掌握情况、个人经验和薪资追求等,可以申请 Java 开发、 PHP 开发、游戏开发人员或 Web 开发人员等职位。 在国…

网址是怎么做成二维码的?扫码查看网站页面怎么做?

现在很多内容都会使用二维码的方式来实现快速的传递&#xff0c;比如现在通过扫码跳转网站、文章、在线视频等等&#xff0c;就是网址转二维码的一种应用。手机扫描二维码自动跳转对应的链接展示内容&#xff0c;有利于网址的快速分享。那么网址二维码制作的方法和步骤是什么样…

服务器基础知识(1)

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;服务器❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 1、什么是服务器 服务器是计算机的一种&#xff0c;它比普通计算机运行更快、负载更高、价格更贵。服务…

C++学习进阶版(二):与文件相关的函数用法

目录 1、读取文件的指定行 &#xff08;1&#xff09;main函数中直接读 &#xff08;2&#xff09;封装成函数 ① 无返回值类型 ② 直接返回读取的内容 2、求文件的行数 3、文件内容读取成一个字符串 1、读取文件的指定行 &#xff08;1&#xff09;main函数中直接读 …