useCallback 和 useMemo 及区别

文章类型:React

发布者:hp

发布时间:2023-04-22

一:定义

useCallback 和 useMemo 都是 React Hooks,用于优化 React 组件的性能。它们可以缓存计算结果,避免重复计算,提高组件的渲染效率。

主要区别是 React.useMemo 将调用 fn 函数并返回其结果,而 React.useCallback 将返回 fn 函数而不调用它

一:区别

1:useCallback 是用于缓存函数的 Hook,它的作用是当依赖发生变化时,只有缓存的函数引用发生变化,才会重新渲染组件

const memoizedCallback = useCallback(
() => {
// do something
},
[dep1, dep2, ...],
);

2:useMemo 是用于缓存值的 Hook,它的作用是在依赖发生变化时,只有缓存的值发生变化,才会重新渲染组件

const memoizedValue = useMemo(
() => {
// do something
return someValue;
},
[dep1, dep2, ...],
);

三:总结

1:useCallback 缓存的是函数,useMemo 缓存的是值。

2:useCallback 返回的是一个函数引用,useMemo 返回的是一个值。

3:useCallback 的依赖数组中依赖变化时会返回新的函数引用,useMemo 的依赖数组中依赖变化时会重新计算值。

下一篇js中的in