认识
2023年02月22日
一、认识
useMemo
缓存变量数据,当组件重新渲染时不会重新创建变量。(防止父组件重新渲染导致变量数据发生变化)
二、语法
const cachedValue = useMemo(calculateValue, dependencies)
-
calculateValue
: 要缓存计算值的函数。它应该是一个没有任何参数的纯函数,并且可以返回任意类型。React
将会在首次渲染时调用该函数;在之后的渲染中,如果dependencies
没有发生变化,React
将直接返回相同值。否则,将会再次调用calculateValue
并返回最新结果,然后缓存该结果以便下次重复使用。 -
dependencies
: 所有在calculateValue
函数中使用的响应式变量组成的数组。响应式变量包括props
、state
和所有你直接在组件中定义的变量和函数。 -
cachedValue
: 在初次渲染时,useMemo
返回不带参数调用calculateValue
的结果。在接下来的渲染中,如果依赖项没有发生改变,它将返回上次缓存的值;否则将再次调用calculateValue
,并返回最新结果。
三、用法
四、对比
4.1 useCallback 和 useMemo 有什么区别?
-
useCallback
: 第一个参数就是缓存的内容 -
useMemo
: 需要执行第一个函数,函数的返回值作为缓存的内容