未处理的运行时错误 TypeError: date.locale is not a function on Ant Design

问题描述 投票:0回答:1

如何解决这个“TypeError: date.locale”?我正在尝试解决这个问题,但尽管我很努力,但我无法找到解决方案。

API响应:

{
  "birthday": "1999-03-09T00:00:00.000Z"
}

更改日期格式

useEffect(() => {
    if (currentRecord) {
      const formattedBirthday = dayjs(currentRecord.birthday)
        .tz("Asia/Dhaka")
        .format("YYYY-MM-DD");
      setCurrentRecord({
        ...currentRecord,
        birthday: formattedBirthday,
      });

      form.setFieldsValue({
        birthday: moment(formattedBirthday),
      });
    }
  }, [currentRecord, setCurrentRecord, form]);

新日期:

birthday: "1999-03-09"

JSX-

<Form.Item
  label="Birthday"
  name="birthday"
  rules={[
    { required: true, message: "Please select a birthday!" }
  ]}
>
  <DatePicker
    style={{ width: "100%" }}
    placeholder="Select your birthday"
    format={dateFormat}
  />
</Form.Item>
reactjs next.js datepicker antd nextjs13
1个回答
0
投票

问题是您将

moment
dayjs
一起使用。在 docs 之后,您应该仅使用
dayjs
来处理与时间相关的值:

useEffect(() => {
    if (currentRecord) {
      const formattedBirthday = dayjs(currentRecord.birthday)
        .tz("Asia/Dhaka")
        .format("YYYY-MM-DD");

      setCurrentRecord({
        ...currentRecord,
        birthday: formattedBirthday
      });

      form.setFieldsValue({
        birthday: formattedBirthday // removed moment
      });
    }
  }, [currentRecord, setCurrentRecord, form]);


<Form.Item
  label="Birthday"
  name="birthday"
  rules={[
    { required: true, message: "Please select a birthday!" }
  ]}
>
  <DatePicker
    style={{ width: "100%" }}
    placeholder="Select your birthday"
    // or an array with all styles your field should accept
    // eg.: ['YYYY-MM-DD', 'YY-MM-DD', 'DD-MM-YY']
    format={'YYYY-MM-DD'} 
  />
</Form.Item>
© www.soinside.com 2019 - 2024. All rights reserved.