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

React Hook Form搭配Material UI Date Picker无法获取初始日期问题

问题原因

React Hook Form默认不会将未初始化、未触发过变更事件的字段纳入提交数据中。你当前的代码没有给dateOfBirth字段设置初始值,所以未修改直接提交时该字段会被忽略;修改日期后触发了onChange事件,字段被注册到表单数据中,就可以正常提交。

解决方案

二选一即可:

  • 方案1:直接在Controller组件上添加defaultValue属性设置初始值,适合单个字段独立设置默认值的场景
<MuiPickersUtilsProvider utils={DateFnsUtils}>
  <Controller
    name="dateOfBirth"
    control={control}
    defaultValue={null} // 可根据需求替换为new Date()设默认当天,或其他指定初始日期值
    render={({ field: { ref, ...rest } }) => (
      <KeyboardDatePicker
        ref={ref}
        margin="dense"
        fullWidth
        id="date-picker-dialog"
        label="Date picker dialog"
        format="MM/dd/yyyy"
        KeyboardButtonProps={{
          "aria-label": "change date",
        }}
        {...rest}
      />
    )}
  />
</MuiPickersUtilsProvider>
  • 方案2:在useForm初始化时统一设置表单默认值,适合多字段统一管理的场景
// 初始化useForm时配置
const { control, handleSubmit } = useForm({
  defaultValues: {
    // 其他表单字段的默认值
    dateOfBirth: null // 同样可按需替换为具体日期值
  }
})

提示:如果需要对日期字段做必填校验,初始值设为null即可配合React Hook Form的校验规则正常触发校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:03