这里非常表层地说明一下这两个东西,建议看官方文档。
useMemo
1、useMemo和useEffect相似,作用也基本一样。
2、useMemo在渲染前触发,useEffect在渲染后触发。
3、属性没有被useMemo监听,在执行set方法时,结果会被缓存(也就是实际上已经改变,但不会在页面上看到变化)。
4、属性被useMemo监听,在执行set方法时会重新渲染组件,同时取出缓存中的其他属性,渲染到组件中,此时可以看到页面上的数据都是最新的。
useCallback
官方文档表示的等价关系:
useCallback(fn, deps) is equivalent to useMemo(() => fn, deps)
某种意义上useCallback可以说是useMemo的扩展。