Antd DatePicker 表单Value 转为 日期字符串格式
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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?