usemeno和usecallback区别及使用场景

1. useMemo

  • 用途 : useMemo 用于缓存计算结果。它接受一个函数和依赖项数组,只有当依赖项发生变化时,才会重新计算该函数的返回值。否则,它会返回缓存的值。

  • 返回值 : useMemo 返回的是函数执行后的结果。

  • 使用场景:

    • 当一个计算量大的函数在每次渲染时都被调用,而计算结果在依赖项没有改变的情况下是相同的时,可以使用 useMemo 来避免重复计算,从而提高性能。

    • 例如,在渲染列表时,计算过滤后的列表或排序后的数据可以使用 useMemo 来缓存结果。

复制代码
javascript复制代码const filteredData = useMemo(() => {
  return data.filter(item => item.active);
}, [data]);

2. useCallback

  • 用途 : useCallback 用于缓存函数引用。它接受一个函数和依赖项数组,只有当依赖项发生变化时,才会返回一个新的函数引用。否则,它会返回缓存的函数引用。

  • 返回值 : useCallback 返回的是函数本身。

  • 使用场景:

    • 当一个函数被传递给子组件,或者作为依赖项传递给 useEffect、useMemo、useContext 等 Hook 时,避免因函数重新创建导致子组件不必要的重新渲染,可以使用 useCallback。

    • 例如,在子组件依赖于父组件传递的回调函数时,使用 useCallback 可以确保子组件只在必要时重新渲染。

复制代码
javascript复制代码const handleClick = useCallback(() => {
  console.log('Button clicked');
}, [dependency]);

总结

  • useMemo 是为了优化计算,避免不必要的重复计算。

  • useCallback 是为了优化函数,避免不必要的函数重新创建,减少子组件的重新渲染

相关推荐
用户298698530141 天前
React 前端将 Excel 工作表导出为图片的技术实践
javascript·react.js·excel
終不似少年遊*2 天前
【安全业务Agent】从场景到编排
python·react.js·ai·langchain·agent·安全架构·工作流
JavaPub-rodert3 天前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
Highcharts.js3 天前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格
JudithHuang3 天前
React 嵌套路由与布局
前端·react.js·arcgis·react·react router
前端小D3 天前
React Native项目开发(iOS侧为例)
javascript·react native·react.js
志尊宝4 天前
AI原生前端开发(042):AI辅助的路由设计与优化
javascript·react.js·ai-native
znsoft5 天前
MaClaw(码卡龙)技术拆解:一个 Go + React 的可自进化智能体平台
开发语言·react.js·golang
濮水大叔5 天前
React/Next.js 生态里,有没有 CabloyJS 这样的全栈框架?
react.js·全栈·next.js
前端小D5 天前
React Native Android 项目搭建
android·react native·react.js