weixin_50298639 2024-03-11 16:07 采纳率: 0%
浏览 35

DatePicker数据回显(getValueProps)

<Form.Item
                getValueProps={(val: string) => {
                  return { value: val ? moment(val) : undefined };
                }}
                getValueFromEvent={(date, dateString) => (date && moment(date).format('YYYY-MM-DD')) || undefined}
              >
                <DatePicker
                  inputReadOnly
                  style={{ width: '100%' }}
                  format="YYYY-MM-DD"      
                />
              </Form.Item>

我用getValueProps写了一个DatePicker的数据回显,有值传入就转成moment格式,回填到DatePicker,能成功触发。但是我再次提交表单的时候这个字段的值是字符串格式,很疑惑不应该已经被转成moment了吗?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-11 16:08
    关注

    引自免费微信小程序:皆我百晓生

    在使用Ant Design的Form.ItemDatePicker组件时,你已经正确地设置了getValueProps来将字符串转换为moment对象以便回显到日期选择器中。然而,在表单提交时字段值仍为字符串格式,这是因为getValueProps主要用于控制表单控件自身的属性,并不直接影响表单字段的实际值。

    在Ant Design的Form中,为了确保表单字段的值是期望的格式(这里是moment对象),你需要在Form.Item上设置正确的valuePropName属性。同时,你也应该在onFinishonSubmit回调中处理数据提交前的格式转换。

    <Form.Item
      name="yourDateField" // 假设这是你的表单字段名
      valuePropName="value"
      getValueProps={(val: string) => ({
        value: val ? moment(val) : undefined,
      })}
      getValueFromEvent={(date, dateString) => (date && moment(date).format('YYYY-MM-DD')) || undefined}
    >
      <DatePicker inputReadOnly style={{ width: '100%' }} format="YYYY-MM-DD" />
    </Form.Item>
    
    // 在Form组件中处理表单提交逻辑
    <Form onFinish={async (values) => {
      const formData = { ...values };
      formData.yourDateField = formData.yourDateField ? formData.yourDateField.format('YYYY-MM-DD') : undefined; // 将moment对象转为字符串
      // 现在formData.yourDateField是一个字符串,可以进行后续的数据提交操作
      // ...
    }}>
    

    通过这种方式,当你从表单获取字段值时,它会被自动转换为moment对象;而在提交表单时,你也可以手动将其转回字符串格式以满足服务器端或其他业务需求。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月11日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?