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

如何解决TypeScript与Mantine的DateValue类型不兼容错误?

解决Mantine DateTimePicker与Form类型不匹配问题

问题原因

代码里的DateTimePicker开启了clearable属性,这会让它的onChange回调返回的val类型变为Date | null(即Mantine定义的DateValue),但表单中visitDateTime字段的类型被TypeScript推断为Date(因为初始值是new Date()),类型不兼容导致了报错。

解决方案

方案1:允许表单字段为null(推荐)

直接调整表单字段的类型,允许visitDateTime为Date | null,和DateTimePicker的返回值类型匹配:

// 先定义表单值的类型(更规范)
type FormValues = {
  visitorName: string;
  firmName: string;
  purposeOfVisit: string;
  vehicleLicense: string;
  email: string;
  phone: number;
  visitDateTime: Date | null;
  isSafetyInstructionsGiven: boolean;
  isGeneralVisitGuideGiven: boolean;
  isTaskingDocumentReceived: boolean;
};

export default function MantineForm() {
  const form = useForm<FormValues>({
    initialValues: {
      visitorName: "",
      firmName: "",
      purposeOfVisit: `${PurposeOfVisit.Subcontractor}`,
      vehicleLicense: "",
      email: "",
      phone: 0,
      visitDateTime: new Date(),
      isSafetyInstructionsGiven: false,
      isGeneralVisitGuideGiven: false,
      isTaskingDocumentReceived: false,
    },
  });
}

之后onChange代码无需修改即可正常使用:

<DateTimePicker
  value={form.values.visitDateTime}
  onChange={(val) => form.setFieldValue("visitDateTime", val)}
  label="Ziyaret Tarih ve Saati"
  clearable
  valueFormat="DD.MM.YYYY - HH:mm"
  locale="tr"
/>

方案2:处理null值,替换为默认日期

如果不想修改字段类型,可以在onChange时把null替换成默认日期(比如当前时间),但点击清空按钮不会真正清空,而是回到默认值:

<DateTimePicker
  value={form.values.visitDateTime}
  onChange={(val) => form.setFieldValue("visitDateTime", val ?? new Date())}
  label="Ziyaret Tarih ve Saati"
  clearable
  valueFormat="DD.MM.YYYY - HH:mm"
  locale="tr"
/>

方案3:移除清空功能

如果不需要用户清空日期,直接去掉clearable属性,DateTimePicker的onChange只会返回Date类型,和表单字段类型完全匹配:

<DateTimePicker
  value={form.values.visitDateTime}
  onChange={(val) => form.setFieldValue("visitDateTime", val)}
  label="Ziyaret Tarih ve Saati"
  valueFormat="DD.MM.YYYY - HH:mm"
  locale="tr"
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:17