要理解React.useMemo
,首先需要理解React.memo
React.memo
React.memo
适用于函数组件而不适用于类组件。- 如果一个函数组件在给定相同
props
的情况下渲染出相同结果,那么可以将该组件包装在React.memo
中使用。 - 使用
React.memo
时,若出现上述情况,React将跳过渲染组件的操作并复用最近一次的渲染结果。 React.memo
只会检查props
变更,如果在使用React.memo
包裹组件时其实现中有useState
、useContext
等Hooks,那么当context发生变化时,该组件仍然会重新渲染。
useMemo
特点
- 接受两个参数,第一个参数为
()=>value
。 - 第二个参数是依赖,为
[m,n]
。 - 只有当依赖变化时,才会计算新的value。
- 如果依赖不变,那么就会重用之前的value。
就像Vue2中的计算属性computed一样。。
注意事项
- 如果value是一个函数,那这个Hook就要写成下面这种看着都麻烦的形式:
useMemo( ( ) => (x) => console.log( x ))
- 这是一个返回函数的函数。
- 因为不好用,于是React的开发团队又添加了一个
useCallback
。
useCallback用法
useCallback(x=>console.log(x), [m])
等价于useMemo(()=>x=>console.log(x),[m])