You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当计算结果相同时useMemo是否有用?变量变更场景缓存疑问

useMemo会重新计算,核心逻辑看这里
  • 结论:这种场景下useMemo一定会重新计算,不会返回之前的缓存值。
  • 关键逻辑:useMemo的缓存判断只看依赖数组里的变量是否发生值的变化,完全不关心计算结果是否和之前一致。

用实际代码示例就能直观理解:

import { useState, useMemo } from 'react';

function Demo() {
  const [a, setA] = useState(3);
  const [b, setB] = useState(2);

  const sum = useMemo(() => {
    console.log('执行加法计算');
    return a + b;
  }, [a, b]); // 依赖数组绑定a和b

  // 点击按钮将a改为1、b改为4
  return (
    <button onClick={() => {setA(1); setB(4)}}>修改数值</button>
  );
}

点击按钮后,控制台会再次打印执行加法计算——这说明useMemo重新执行了回调函数,哪怕这次计算出的sum还是5。

总结来说:useMemo只认依赖项的变化,不认计算结果的重复。只要依赖列表里的任意一个值发生改变,它就会重新执行计算逻辑,再把新结果缓存起来。

内容的提问来源于stack exchange,提问作者shyvijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:54:56