useMemo 主要用来解决使用React Hooks产生的无用渲染的性能问题,使用function的形式声明组件失去了shouldComponentUpdate(组件更新之前)这个声明周期,也就是说我们没有办法通过组件更新前条件来决定组件是否更新。而且在函数组件中,也不再区分mount和update两种状态,这意味着函数组件的每一次调用都会执行内部的所有逻辑,带来了非常大的性能损耗。
useMemo 和 useCallback都是解决上述性能问题的。
useMemo和useCallback都会在组件第一次渲染的时候执行,之后会在其依赖的变量发生改变时再次执行;并且这两个hooks都返回缓存的值,useMemo返回缓存的变量,useCallback返回缓存的函数。