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

useCallback的依赖数组是否需要包含默认参数?

问题解答

必须把defaultStartDate和defaultEndDate加入useCallback的依赖数组,原因如下:

  • 函数参数的默认值是调用时才会求值的,每次调用handleDateChange如果没传对应参数,会取当前作用域里的defaultStartDate/defaultEndDate值。
  • useCallback的核心是缓存函数引用,只有依赖数组里的变量变化时,才会生成新的函数。要是不把这俩变量加进去,当它们的值更新后,handleDateChange还是旧的函数引用,调用时会用旧的默认值,直接导致逻辑不符合预期。
  • 举个实际场景:假设defaultStartDate从2024-01-01改成了2024-02-01,但没加进依赖,此时调用handleDateChange()(不传startDate),函数会依旧使用2024-01-01作为默认值,这显然不是你想要的结果。

另外要注意,如果你用ESLint的react-hooks/exhaustive-deps规则,它也会强制要求你把这两个变量加入依赖数组,避免出现这类隐蔽的bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:25:16