【React Hooks原理 - useCallback、useMemo】

useMemo用于缓存计算结果,它只在依赖项发生变化时重新计算

原理:

依赖项检查:useMemo接收2个参数,一个"创建"函数和一个依赖项数组。依赖项数组中的值在每次渲染时都会被比较,以决定是否需要重新计算

缓存机制:如果依赖项没有发生变化,useMemo会返回上一次计算的结果,而不是重新执行"创建"函数,避免了在组件每次渲染时都进行昂贵的计算

优化渲染:减少了组件的渲染次数

复制代码
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

useCallback:用于缓存函数定义。确保依赖项不变的情况下,不会重新创建函数

原理:

依赖项检查:useCallback接收一个函数和一个依赖项数组,如果依赖项没变化,会返回缓存的函数引用,而不是创建一个新的函数

避免不必要的渲染:在React中,父组件的重新渲染会导致其所有子组件也重新渲染,除非这些子组件的props没有改变,从而避免子组件不必要的渲染

总结:

  • useMemo 用于缓存计算结果,避免在每次渲染时重复计算。

  • useCallback 用于缓存函数定义,避免在每次渲染时创建新的函数实例。

相关推荐
Jedi Hongbin15 分钟前
Three.js NodeMaterial 节点材质系统文档
前端·javascript·three.js·nodematerial
前端小马25 分钟前
前后端Long类型ID精度丢失问题
java·前端·javascript·后端
用户14567756103734 分钟前
干净的图片批量处理,处理速度飞快
前端
用户1456775610371 小时前
亲测好用!简单实用的图片尺寸调整工具
前端
索西引擎1 小时前
npm、yarn、pnpm
前端·npm·node.js
天生我材必有用_吴用2 小时前
Vue3 + VitePress 搭建组件库文档平台(结合 Element Plus 与 Arco Design Vue)—— 超详细图文教程
前端
liu****2 小时前
基于websocket的多用户网页五子棋(八)
服务器·前端·javascript·数据库·c++·websocket·个人开发
San302 小时前
深入理解 JavaScript 函数:从基础到高阶应用
前端·javascript·node.js
ttyyttemo2 小时前
Column,rememberScrollState,记住滚动位置
前端
芒果茶叶3 小时前
并行SSR,SSR并行加载
前端·javascript·架构