useCallback()对函数做缓存, useMemo()对返回值做缓存
结论:当父组件有函数或者值传入了memo()包裹的子组件,那么我们可以使用useCallback或者useMemo将父组件的函数或者值进行包裹。避免子组件重复渲染。
注意:如果传入子组件的值是基本数据类型,且子组件用memo()包裹,那么不用useMemo包裹值,子组件也不会重新渲染(SCU)。只有当传入的值是对象的时候,我们才用useMemo进行缓存
useRef()用法:
1.操作DOM
2.缓存数据,让其在组件整个生命周期中保持不变