跳到主要内容

认识

2023年02月22日
柏拉文
越努力,越幸运

一、认识


useMemo 缓存变量数据,当组件重新渲染时不会重新创建变量。(防止父组件重新渲染导致变量数据发生变化)

二、语法


const cachedValue = useMemo(calculateValue, dependencies)
  • calculateValue: 要缓存计算值的函数。它应该是一个没有任何参数的纯函数,并且可以返回任意类型。React 将会在首次渲染时调用该函数;在之后的渲染中,如果 dependencies 没有发生变化,React 将直接返回相同值。否则,将会再次调用 calculateValue 并返回最新结果,然后缓存该结果以便下次重复使用。

  • dependencies: 所有在 calculateValue 函数中使用的响应式变量组成的数组。响应式变量包括 propsstate 和所有你直接在组件中定义的变量和函数。

  • cachedValue: 在初次渲染时,useMemo 返回不带参数调用 calculateValue 的结果。在接下来的渲染中,如果依赖项没有发生改变,它将返回上次缓存的值;否则将再次调用 calculateValue,并返回最新结果。

三、用法


四、对比


4.1 useCallback 和 useMemo 有什么区别?

  • useCallback: 第一个参数就是缓存的内容

  • useMemo: 需要执行第一个函数,函数的返回值作为缓存的内容