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

React中useMemo不传依赖数组与传入空依赖数组的区别是什么

两种useMemo写法的区别

两种写法的执行逻辑和实际作用完全不同:

  • 无依赖数组的写法:const value = useMemo(() => {...})
    每次组件重新渲染时,useMemo包裹的回调都会重新执行一次,返回的计算结果也会同步更新。这种写法完全没有发挥useMemo的缓存作用,和你直接在组件内写const value = 计算逻辑没有任何差异,属于不符合React规范的错误用法,在严格模式下可能直接抛出语法警告。
  • 空数组作为依赖的写法:const value = useMemo(() => {...}, [])
    仅在组件首次挂载渲染时执行一次回调计算结果,后续不管组件因为什么原因触发重渲染,都会直接复用第一次的缓存结果,不会再重新执行回调逻辑。这种写法通常用来声明仅需要计算一次的常量值。

额外提示:React官方明确要求useMemo、useCallback、useEffect这类依赖型Hook必须传入第二个依赖参数,缺失依赖参数的写法不被官方支持,不要在正式项目中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:45:02