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

React中useMemo为何在依赖项变化时重复执行?

为什么useMemo在依赖项变化时即使返回值相同仍会执行?

你对useMemo的理解存在误区:useMemo的缓存触发逻辑只看依赖数组内的变量是否发生变化,和回调函数的返回值没有任何关系。

你的代码里把count加入了useMemo的依赖数组,每次点击修改count时,依赖数组的内容发生变化,React就会重新执行useMemo里的回调函数——不管你返回的是固定值2还是其他内容,都会触发console.log("call")。

如果你的回调函数不需要依赖count,只想固定缓存这个返回值,只需要把依赖数组改成空数组即可:

const label = useMemo(() => {
    console.log("call");
    return 2;
}, []);

这样组件只有首次渲染时会执行一次回调,后续无论count如何变化,都不会再触发useMemo的回调函数。

内容的提问来源于stack exchange,提问作者Taiwan No.1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:22:00