DataPicker总是报错date.locale等not a function

441 阅读1分钟

报这个错误的原因是DatePicker回显的时候格式要求必须是Date类型,不能是string类型,因此只要把回显值和自己保存的值的格式正确了就不会报与之相关的错误;

import dayjs from 'dayjs';
let operator = context.getFieldValue([
conditionFormPropName.conditionsFieldList,
index,
conditionFormPropName.conditionFieldListItem.optionalOperator,
]);
operator = isNullOrUndefined(operator) ? undefined : operator.toLowerCase();
switch (operator) {
case ComparisonOps.RANGE: {
  let dateValue = context.getFieldValue([
    conditionFormPropName.conditionsFieldList,
    index,
    conditionFormPropName.conditionFieldListItem.value,
  ]);
  return (
    <ProFormDateRangePicker
      name={[
        conditionFormPropName.conditionsFieldList,
        index,
        conditionFormPropName.conditionFieldListItem.value,
      ]}
      fieldProps={{
        style: { width: 284, height: '32px' },
        format: 'YYYY-MM-DD',
        value:
          dateValue?.length === 2
            ? (dateValue.map((date: any) => dayjs(date)) as any)
            : undefined,
        onChange(value, dateString) {
          context.setFieldValue(
            [
              conditionFormPropName.conditionsFieldList,
              index,
              conditionFormPropName.conditionFieldListItem.value,
            ],
            [
              dayjs(dateString[0]).format('YYYY-MM-DD'),
              dayjs(dateString[1]).format('YYYY-MM-DD'),
            ],
          );
        },
      }}
    />
  );
}
default: {
  let dateValue = context.getFieldValue([
    conditionFormPropName.conditionsFieldList,
    index,
    conditionFormPropName.conditionFieldListItem.value,
  ]);
  return (
    <ProFormDatePicker
      colProps={{ xl: 8, md: 12 }}
      name={[
        conditionFormPropName.conditionsFieldList,
        index,
        conditionFormPropName.conditionFieldListItem.value,
      ]}
      fieldProps={{
        style: { width: 284, height: '32px' },
        format: 'YYYY-MM-DD',
        value: dateValue?.length ? dayjs(dateValue[0]) : undefined,
        onChange(value, dateString) {
          context.setFieldValue(
            [
              conditionFormPropName.conditionsFieldList,
              index,
              conditionFormPropName.conditionFieldListItem.value,
            ],
            [dayjs(dateString).format('YYYY-MM-DD')],
          );
        },
      }}
    />
  );
}
}