Antd DatePicker 表单Value 转为 日期字符串格式

Antd 4.x 版本和 5.x 版本中 DatePicker value 类型分别是: moment 对象和 dayjs 对象类型,但通常提交表单时候,后端一般都要求是日期字符串格式“2022-08-09”这样; 普遍的做法是在提交表单 onFinish 方法里对表单提交参数进行 .format()转换为字符串;同时回填时候,还需要注意将后端返回 字符串日期 转换为 moment或dayjs对象格式。 如果页面在复杂一些,会导致 这种日期格式转换出现在不同地方,不利于管理维护;
 

解决方法:

这里可以Form.Item 借助 getValueFromEvent 和 getValueProps 属性对 DatePicker 组件value格式转换进行统一管理; 这样就可以直接用后端返回 日期字符串进行回填,同时提交表单时候自动会为 日期字符串 格式值,不需要在其他地方进行额外格式转换了。

// 错误使用  

<Form onFinish={handleSubmit} initialValues={{ date: "2023-04-29" }}>
      <Form.Item
        name="date"
        getValueFromEvent={(...[, dateString]) => 
           dateString;
        }
        getValueProps={(value) => ({
          value: value ? moment(value) : undefined
        })}
      >
        <DatePicker format="YYYY-MM-DD" />
      </Form.Item>
      <Button type="primary" htmlType="submit">
        提交
      </Button>
    </Form>
import dayjs from 'dayjs';


<Form.Item
    name='house_payment_time'
    label='交款时间'
    rules={[]}
    getValueFromEvent={(...[, dateString]) => dateString}
    getValueProps={(value) => ({value: value ? dayjs(value, 'YYYY-MM-DD') : undefined})}
>
    <DatePicker
        format={{
            format: 'YYYY-MM-DD',
            // type: 'mask',
        }}
    />
</Form.Item>

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值