usemeno和usecallback区别及使用场景

1. useMemo

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

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

  • 使用场景:

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

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

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

2. useCallback

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

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

  • 使用场景:

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

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

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

总结

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

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

相关推荐
名字还没想好☜20 小时前
React 用自定义 useDebounce Hook 治好搜索框频繁请求:防抖、竞态取消与卸载清理
前端·javascript·react.js·react·hooks
淼澄研学21 小时前
Python调用通义千问API实现长尾搜题内容自动化生成实战
前端·react.js·架构
张元清1 天前
React useSessionStorage Hook:刷新不丢、只属于当前标签页的状态 (2026)
前端·javascript·react.js
拾年2752 天前
React Hooks 进阶篇:useMemo / useCallback / useReducer / useImperativeHandle,用「算账 +
前端·javascript·react.js
拾年2752 天前
React Hooks 保姆级教程:把组件想象成失忆的打工人,4 个 Hook 带你原地起飞
前端·javascript·react.js
小林ixn2 天前
在浏览器里跑 DeepSeek-R1:WebGPU + Transformers.js 实战
react.js·llm·浏览器
名字还没想好☜2 天前
React 用 useEffect 做轮询实战:setInterval 拿到旧 state 的闭包陷阱与正确清理
前端·javascript·react.js·react·useeffect
张元清2 天前
React useLatest Hook:在异步回调里读到最新状态 (2026)
javascript·react.js
光影少年2 天前
react navite图片加载优化、大图卡顿、缓存策略
前端·react native·react.js
To_OC2 天前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript