useMemo 和 useCallback 是 React 中用于性能优化的两个重要 Hook,它们基于相同的依赖项比较机制,但适用场景不同。以下是它们的详细对比:
对比维度 |
|
|
|---|---|---|
缓存对象 | 缓存任意类型的计算结果(如数字、对象、数组等) | 专门缓存函数 |
语法形式 |
|
|
本质关系 | 可以模拟 | 是 |
典型使用场景 |
|
|
useMemo 缓存计算结果// 缓存复杂计算的结果
const total = useMemo(() => {
// 假设这是一个耗时计算
return data.reduce((sum, item) => sum + item.value, 0);
}, [data]); // 仅当 data 变化时重新计算useCallback 缓存函数// 缓存回调函数
const handleDelete = useCallback((id) => {
setData(data.filter(item => item.id !== id));
}, [data]); // 仅当 data 变化时重新创建函数
// 传递给子组件时,不会触发不必要的重渲染
return <ItemList onDelete={handleDelete} />;useCallback(语义更清晰)。useMemo。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。