React

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > React > react useMemo优化

react中useMemo优化的实现

作者:光影少年

本文主要介绍了react中useMemo优化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

好的,我们来深入讲讲 React 的 useMemo 以及它的优化思路。我们一步步拆解,确保你能真正理解什么时候用、怎么用,以及可能的坑。

1️⃣ useMemo 的本质

useMemo 是一个 性能优化 Hook,它的作用是 缓存计算结果,避免在每次渲染时重复计算开销大的值。

语法:

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

💡 核心:useMemo 不是用来缓存组件的渲染,而是用来缓存计算结果。

2️⃣ 典型使用场景

场景 1:开销大的计算

function MyComponent({ number }) {
  const factorial = useMemo(() => {
    console.log('计算阶乘');
    let result = 1;
    for (let i = 2; i <= number; i++) {
      result *= i;
    }
    return result;
  }, [number]);
  return <div>{factorial}</div>;
}

✅ 优化点:

场景 2:避免引用类型变化导致子组件重复渲染

function Parent({ data }) {
  const filteredData = useMemo(() => data.filter(item => item.active), [data]);
  return <Child data={filteredData} />;
}

3️⃣ 使用 useMemo 的注意点

不要滥用

依赖数组必须准确

不缓存副作用

4️⃣ 优化策略总结

缓存重计算值

缓存引用类型

分离组件:如果父组件渲染频繁,且子组件依赖开销大的计算,考虑用 useMemo 或拆成独立组件

依赖最小化:确保依赖数组只放必须的值,避免频繁失效

⚡ 小技巧

配合 React.memo

const Child = React.memo(({ data }) => {
  console.log('Child 渲染');
  return <div>{data.length}</div>;
});
function Parent({ items }) {
  const activeItems = useMemo(() => items.filter(item => item.active), [items]);
  return <Child data={activeItems} />;
}

Child 只在 activeItems 改变时渲染,而不是每次 Parent 渲染。

配合 useCallback 缓存函数:当函数作为 prop 传递时,避免引用变化

const handleClick = useCallback(() => console.log('点击'), []);

到此这篇关于react中useMemo优化的实现的文章就介绍到这了,更多相关react useMemo优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文