useMemo和useEffect有什么区别?(使用场景推荐阅读)_hsany330的博客-CSDN博客_usememo和useeffect的区别
什么时候使用useCallback和useMemo?_Windy_Coding的博客-CSDN博客_什么时候使用usecallback
userEffect: setState时先触发DOM更新,然后触发effect,即:effect
只能在DOM
更新后再触发
userMemo:setState时触发DOM更新,DOM变化触发相应的Memo然后触发dom中的函数,即:memo
是在DOM
更新前触发的,就像官方所说的,类比生命周期就是shouldComponentUpdate
但 react 的 hook(useEffect, useMemo, useCallback 等) 会有一个 deps array(第二个参数),而这些 hook 要不要再次被计算取决于本次 deps array 中的数据与上次 deps array 中的数据进行一次浅 diff,如果不相等则再次运行这个 hook,反之则不执行。
我们都知道在 js 在存储变量时,简单来说会把引用类型的地址存在数据栈中,而将值存在数据堆中,而浅 diff 的原理是比较二者在栈中存储的数据是否相同,并不关心堆中的情况
useMemo常用在以下两种场景的优化中:1)引用类型的变量 2)需要大量时间执行的计算函数。
当子组件接收一个函数props时,一般会使用useCallback来缓存这个函数,减少不必要的re-render