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

React子组件useEffect依赖updateTime但父组件未传,运作原理是什么?

问题解答

首先明确几个核心逻辑:

  • 当父组件Users没有给UsersTable传递updateTime属性时,子组件内的props.updateTime值为undefined。
  • 你的useEffect钩子依赖数组是[props.updateTime],组件初始渲染时,该依赖为undefined,所以会执行一次fetchUsers(1)。
  • 之后如果父组件始终未传递updateTime,这个依赖会一直保持undefined,不会触发变化,因此useEffect不会重复执行。

另外可以排查几种潜在情况:

  • 是否Users组件在某个分支逻辑里动态传递了updateTime,只是你没注意到?比如在条件渲染的分支中补充了这个属性。
  • 是否给UsersTable设置了defaultProps?如果有类似下面的定义,props.updateTime会使用默认值而非undefined:
UsersTable.defaultProps = {
  updateTime: 0
};
  • 是否UsersTable内部自己声明了同名的updateTime状态?比如用useState定义了变量,和props产生了混淆。

总结:如果确实没传递updateTime,这个useEffect只会在组件首次渲染时执行一次,除非后续父组件开始传递并修改该属性,否则不会再次触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:34:53