Lazy loaded image
技术分享
详解 React useCallback 和 useMemo
字数 323阅读时长 1 分钟
2021-12-18
2025-5-10
type
status
date
slug
summary
tags
category
icon
password

详解 React 的 useCallback 和 useMemo

在 React 开发中,useCallback 和 useMemo 是两个非常重要的性能优化 Hook。它们经常被用于避免不必要的渲染和函数重建。

一、useCallback:缓存函数引用

✅ 作用:避免子组件因为函数变化而重新渲染

示例:

这个函数在组件多次渲染时,只要依赖项 [] 没变,它的引用就是稳定的。

搭配 React.memo 使用效果更佳:

✅ 如果不使用 useCallback,每次 Parent 重新渲染都会重新创建 handleClick,导致 Child 重新渲染。

二、useMemo:缓存计算结果

✅ 作用:避免不必要的重复计算

示例:

每次渲染时,只有当 count 发生变化,才会重新计算。

三、useCallback vs useMemo 的区别

用法
作用
返回值类型
useCallback(fn, deps)
缓存函数
函数
useMemo(() => fn, deps)
缓存任意值(也可以是函数)
任意类型
其实:
只不过语义上 useCallback 表示“我缓存的是一个函数”,更具可读性。

四、总结:

场景
是否适合使用
子组件使用 React.memo + props 传函数
useCallback
重计算代价高的表达式或函数
useMemo
简单计算或函数定义
❌ 不需要

 
上一篇
了解 React useEffect 的常见陷阱
下一篇
学习 Redux 和 React-Redux