useMemo和useCallback大型辩论赛

来一句长长的感叹,众所周知啊,useMemo和useCallback都是用来做缓存的,性能优化的,什么时候使用useMemo,什么时候使用useCallback呢
 

useMemo

简单一句来讲:用于缓存昂贵的计算结果,在确保依赖没有变化时,不会重新计算。它适合用于复杂且大量计算且耗时的逻辑。一加到一百,每次增长一的累加你觉得数据量大不大,如果觉得不大,那你每次增长0.1的累加,实在不行0.00000000000001的累加到一百,我就不信你还说这个例子计算量不大。

1.当组件中有一个结果是根据大量计算得到的,且每次render不需要结果重新计算用它。

2.当自身是引用类型且会被其他hooks依赖时用它

3.当数据是引用类型且传递给子组件时不需要重新渲染用它。

useCallback

用于缓存一个函数,在依赖不变的情况下,组件每次重新渲染,不会创建新的函数引用,在子调父的回调函数中,使用useCallback可以有效的避免调用引起的重新渲染。

说多了都是无用功,来来来,我们上总结:用于缓存结果使用useMemo,用于缓存函数使用useCallback。

在不确定的情况下我们随便使用行不行,当然行啦,功能是没问题的,但是性能就不一定了。就好像你晚上喝茶喝咖啡一样,晚上随便喝喝行不行,当然行,身体是没问题的,但是精神有没有问题那就只有你自己知道了。这里我们开了一个小小的玩笑啊。功能好比身体,性能好比衣服,穿的破破烂烂的也可以在大街上行走,穿的光鲜亮丽的也可以成为一道风景线。看你自己的需求,实在没啥要求的我建议这个hooks学都不要学,反正性能好坏都是那样,你也不会在乎,干什么还学这两个hooks,来浪费自己的脑容量。仔细一想,道理是这个道理,我开发的功能又不是我用,性能好坏的我不在乎,但是你有没有想过,你拎着一大包钱去银行存钱,周围一堆小偷盯着你,就盼着你存不进去,只有你自己急切地渴望快点存进去,因为下一秒,钱有可能就是别人的了,此时存钱的界面一直提示你,请稍等,系统正在检验,每过一秒钟,心中有一万个nimade在涌上嘴边,你会不会因为这个系统的性能有个想把机器按烂了的冲动。哈哈哈。唉~。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值