第27节——useMemo

news/2024/11/19 20:43:52/

一、概念

useMemo 是 React 中的一个钩子,它可以帮助你避免在不必要的情况下重新渲染组件。它通过对比当前状态和前一个状态,决定是否重新计算或记忆一个值。

接收两个参数,第一个参数是个函数,第二个是依赖项。返回一个****memoized值,只有当它的某个依赖项改变时才重新计算 memoized 值,初始化的时候也会调用一次,这种优化有助于避免在每次渲染时都进行高开销的计算

import React, { useState, useMemo } from 'react';export default function hook() {const [count, setCount] = useState(1)const [total, setTotal] = useState(1)const memoizedValue = useMemo(() => {console.log("只有total变了我才会变")// 返回的值是total+1return total + 1}, [total]);return (<div><button onClick={() => setCount(count + 1)}>count + 1</button><button onClick={() => setTotal(total + 1)}>total + 1</button><div>count is {count}</div><div>total is {total}</div><div>memoizedValue is {memoizedValue}</div></div>)
}

二、useMemo和useCallback的区别

一句话来解释,useMemo是缓存值的,useCallback是缓存函数的

三、使用场景

1、数据过滤

如果你需要在组件中过滤大量数据,并且数据不需要频繁更新,那么可以使用 useMemo 将过滤结果缓存,避免不必要的重新计算。

2、计算值

如果你需要在组件中计算某些值,并且这些值不需要频繁更新,那么可以使用 useMemo 将这些值缓存,避免不必要的重新计算。

3、预处理

如果你需要在组件中进行复杂的预处理,并且预处理结果不需要频繁更新,那么可以使用 useMemo 将预处理结果缓存,避免不必要的重新计算

4、总结

因此,如果你在组件中执行了复杂的计算,并且这些计算结果不需要频繁更新,那么可以考虑使用 useMemo 优化组件性能


http://www.ppmy.cn/news/1112858.html

相关文章

友善Nona Pi开发板ubuntu22.04系统用Python3.8.17的pip安装PyQt5.15.2时报错“Q_PID”这个宏未定义的一种解决办法

安装命令&#xff1a; pip install PyQt55.15.2 --config-settings --confirm-license --verbose -i https://mirrors.aliyun.com/pypi/simple/ 遇到出错&#xff1a; 如图&#xff1a; 分析具体错误内容&#xff1a; These bindings will be built: Qt, QtCore, QtNetwo…

Java实现计算两个日期之间的工作日天数

需求&#xff1a; 需要在后端实现 计算当前日期与数据库内保存的日期数据之间相隔的工作日数目 实现 import java.time.DayOfWeek; import java.time.LocalDateTime;public class WorkdaysCalculator {public static void main(String[] args) {String givenDateTimeStr &q…

企业经营异常查询API:保障供应链的可靠性与稳定性

引言 在全球化和数字化的商业环境中&#xff0c;供应链的可靠性和稳定性对企业的成功至关重要。企业经营异常信息查询API正崭露头角&#xff0c;成为供应链管理中不可或缺的工具。本文将深入探讨如何利用企业经营异常信息查询API来保障供应链的可靠性和稳定性&#xff0c;以及…

【微信小程序】网络请求

环境&#xff1a;微信小程序开发工具 测试api&#xff08;随机获取猫咪靓照&#xff09;:https://api.thecatapi.com/v1/images/search?limit2 示例&#xff1a; 完整代码 request.wxml <button bind:tap"requestBtn" type"primary">网络请求&l…

论文总结《A Closer Look at Few-shot Classification Again》

原文链接 A Closer Look at Few-shot Classification Again 摘要 这篇文章主要探讨了在少样本图像分类问题中&#xff0c;training algorithm 和 adaptation algorithm的相关性问题。给出了training algorithm和adaptation algorithm是完全不想关的&#xff0c;这意味着我们…

系统架构设计高级技能 · 构件与中间件技术

点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 系统架构设计高级技能 构件与中间件技术 一、构件的定义二、构件系统架构特性三…

前端面试话术集锦第 14 篇:高频考点(React常考基础知识点)

这是记录前端面试的话术集锦第十四篇博文——高频考点(React常考基础知识点),我会不断更新该博文。❗❗❗ 1. 生命周期 在V16版本中引入了Fiber机制。这个机制一定程度上的影响了部分生命周期的调用,并且也引入了新的2个API来解决问题。 在之前的版本中,如果你拥有一个很…

[k8s] kubectl port-forward 和kubectl expose的区别

kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…