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

React hooks——useMemo

一、简介

useMemo 是 React 提供的一个 Hook,用于性能优化,它通过"记忆"(memoization)计算结果来避免在每次渲染时都进行不必要的复杂计算。

1.1 基本用法

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
  • 第一个参数:计算函数,返回需要记忆的值

  • 第二个参数:依赖项数组,只有当依赖项发生变化时,才会重新计算值

1.2 主要特点

  1. 性能优化:避免在每次渲染时都执行昂贵的计算

  2. 引用稳定性:当依赖项未变化时,返回相同的引用,有助于避免子组件不必要的重新渲染

  3. 与 useEffect 的区别

    • useMemo 在渲染期间执行

    • useEffect 在渲染完成后执行

二、代码实现

import { useState, useMemo } from "react";// 计算斐波那契数列之和
const fib = (n) => {console.log("计算函数执行了");if (n <= 1) {return 1;}return fib(n - 1) + fib(n - 2);
};export default function App() {const [count1, setCount1] = useState(0);const [count2, setCount2] = useState(0);// count1 和 count2 修改 都会重新计算// const fib1 = fib(count1);// 仅在count1 修改时会计算const fib1 = useMemo(() => {return fib(count1);}, [count1]);console.log("组件重新渲染了");return (<div><button onClick={() => setCount1(count1 + 1)}>change count1+1</button><button onClick={() => setCount2(count2 + 1)}>change count2+1</button></div>);
}
http://www.lryc.cn/news/591172.html

相关文章:

  • Android离线TTS实战——集成espeak-ng实现开箱即用的中文语音播报
  • Flutter:上传图片,选择相机或相册:wechat_assets_picker
  • 玖[9],相机/镜头/光源
  • 2021-07-21 VB窗体求范围质数(Excel复制工作簿)
  • Java使用FastExcel实现模板写入导出(多级表头)
  • 在Anaconda Prompt中安装库【保姆教程】
  • 使用flock单进程启动,仍然有多个同名进程可以同时运行
  • 苹果的机器学习框架将支持英伟达的CUDA平台
  • web后端开发(javaweb第十天)
  • 【后端】Linux系统发布.NetCore项目
  • suricata新增Mysql告警规则处理
  • Zemax坐标断点
  • GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
  • 【git 如何查看本地分支与远程分支之间的差异】
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC
  • 单片机(STM32-时钟系统)
  • AI 智能质检系统在汽车制造企业的应用​
  • select_shape_proto 用起来很省事
  • 错误 0x80370102排查
  • CCLink IE转ModbusTCP网关配置无纸记录器(中篇)
  • 大语言模型系列(1): 3分钟上手,在骁龙AI PC上部署DeepSeek!
  • uniapp云托管前端网页
  • CentOS在线安装docker教程
  • 人工智能概念之八:常见的参数调优方法(交叉验证网格搜索、随机优化、贝叶斯优化、Hyperband优化)
  • npm 和 npx 区别对比
  • Django `transaction.atomic()` 完整使用指南
  • Java行为型模式---命令模式
  • Visual Studio 的常用快捷键
  • 自定义 django 中间件
  • 巧用 Golang 函数特性实现单元测试中的数据库操作 Mock