在 React 中,与 useMemo
类似用于性能优化、缓存数据或避免不必要计算的 Hook 主要有以下几个:
useCallback
useMemo
的关系:useCallback(fn, deps)
等价于 useMemo(() => fn, deps)
,但更语义化地用于函数缓存。 const handleClick = useCallback(() => {
console.log('Clicked', id);
}, [id]); // 仅当 id 变化时,函数才会重新创建
return <ChildComponent onClick={handleClick} />;
useRef
.current
属性可以存储任意值,且不会在组件重新渲染时重置。useMemo
的区别:useRef
缓存的是“容器”(ref 对象),而 useMemo
缓存的是计算结果;useRef
的值变化不会触发组件重新渲染,而 useMemo
的依赖变化会触发重新计算。 const prevValueRef = useRef();
// 缓存上一次的值
useEffect(() => {
prevValueRef.current = currentValue;
}, [currentValue]);
const prevValue = prevValueRef.current;
useReducer
(间接优化)useMemo
的关联:虽然不直接缓存值,但可以减少因状态分散导致的不必要渲染。例如,当多个状态更新逻辑关联紧密时,用 useReducer
统一管理,避免频繁的状态分散更新触发渲染。useCallback
是 useMemo
针对函数的“特化版本”,专门缓存函数。useRef
用于缓存不需要触发渲染的变量,更适合存储“持久化”数据。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。