当前位置: 首页 > news >正文

【React Hooks原理 - useCallback、useMemo】

useMemo用于缓存计算结果,它只在依赖项发生变化时重新计算

原理:

依赖项检查:useMemo接收2个参数,一个“创建”函数和一个依赖项数组。依赖项数组中的值在每次渲染时都会被比较,以决定是否需要重新计算

缓存机制:如果依赖项没有发生变化,useMemo会返回上一次计算的结果,而不是重新执行“创建”函数,避免了在组件每次渲染时都进行昂贵的计算

优化渲染:减少了组件的渲染次数

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

useCallback:用于缓存函数定义。确保依赖项不变的情况下,不会重新创建函数

原理:

依赖项检查:useCallback接收一个函数和一个依赖项数组,如果依赖项没变化,会返回缓存的函数引用,而不是创建一个新的函数

避免不必要的渲染:在React中,父组件的重新渲染会导致其所有子组件也重新渲染,除非这些子组件的props没有改变,从而避免子组件不必要的渲染

总结:

  • useMemo 用于缓存计算结果,避免在每次渲染时重复计算。

  • useCallback 用于缓存函数定义,避免在每次渲染时创建新的函数实例。

相关文章:

  • 多语言笔记系列:Polyglot Notebooks 混合使用多语言并共享变量
  • 复刻低成本机械臂 SO-ARM100 标定篇
  • Vue常用优化
  • jeecg查询指定时间
  • 系统架构设计师:设计模式——行为设计模式
  • 【Touching China】2007-2011
  • WordPress不支持中文TAG标签出现404的解决方法
  • ES6入门---第三单元 模块三:async、await
  • LeetCode每日一题5.4
  • C++多态(上)
  • Java面试大纲(以及常见面试问答)
  • 如何查看电脑IP地址和归属地:全面指南
  • 强化学习机器人模拟器——RobotApp:一个交互式强化学习模拟器
  • Dify框架面试内容整理-Dify部署后常见问题有哪些?如何排查?
  • 【循环依赖(Circular Dependency)】
  • C++多态(下)
  • 自监督学习(Self-supervised Learning)李宏毅
  • 第十章.XML
  • langchain中 callbacks constructor实现
  • devtmpfs_create_node
  • 当Z世代与传统戏曲在春日校园相遇
  • 新华每日电讯“关爱青年成长”三连评:青春应有多样的精彩
  • 媒体:机票盲盒值不值得开?年轻人正用行为博弈的逻辑重构规则
  • 山东一景区怕游客赶不到海撒三千斤蛤蜊:给游客提供情绪价值
  • 空间站第八批科学实验样品返抵地球并交付科学家
  • 据报特斯拉寻找新CEO,马斯克财报会议上表态:把更多时间投入特斯拉