【React Hooks原理 - useCallback、useMemo】

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

原理:

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

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

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

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

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

原理:

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

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

总结:

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

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

相关推荐
患得患失94937 分钟前
【前端】【总复习】HTML
前端·html
zhangguo20022 小时前
Vue之脚手架与组件化开发
前端·javascript·vue.js
夏子曦6 小时前
webpack 的工作流程
前端·webpack·node.js
麻芝汤圆6 小时前
在 Sheel 中运行 Spark:开启高效数据处理之旅
大数据·前端·javascript·hadoop·分布式·ajax·spark
gaog2zh7 小时前
0903Redux改造项目_用户信息_状态管理-react-仿低代码平台项目
react.js·redux
yrldjsbk7 小时前
uniapp开发09-设置一个tabbar底部导航栏且配置icon图标
前端·uni-app
Dy大叔7 小时前
功能:指定类别网站点击打开
前端框架·php
sunbyte7 小时前
Three.js + React 实战系列 - 项目展示区开发详解 Projects 组件(3D 模型 + 动效 + 状态切换)✨
javascript·react.js·3d
源码方舟7 小时前
【HTML5】显示-隐藏法 实现网页轮播图效果
前端·javascript·html·css3·html5
二川bro8 小时前
依赖注入详解与案例(前端篇)
前端