antd Form表单getFieldDecorator中设置RangePicker的默认时间

在antd中的时间选择器RangePicker中,使用defaultValue来设置默认值。如下所示:

    <RangePicker
      defaultValue={[moment('2015/01/01', dateFormat), moment('2015/01/01', dateFormat)]}
      format={dateFormat}
    />

但如果RangePicker在Form表单中,使用defaultValue就不行了。而应该要使用getFieldDecorator 中的一个initialValue属性。代码如下:

        <Form.Item {...formItemLayout} label="时间范围">
          {getFieldDecorator('timeRange', {
            rules: [
              {
                required: true,
                message: '请选择时间范围',
              },
            ],
            initialValue: [ // 核心代码
              moment(‘2019/07/15’, dateFormat),
              moment(‘2019/07/16’, dateFormat),
            ],
          })(
            <RangePicker
              format={dateFormat}
              onChange={e => {
                this.rangePickerChange(e);
              }}
            />
          )}
        </Form.Item>

核心代码:

           initialValue: [ // 核心代码
              moment(‘2019/07/15’, dateFormat),
              moment(‘2019/07/16’, dateFormat),
            ],

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ant Design 的 `RangePicker` 组件默认返回的时间格式为 `Moment.js` 对象数组,其一个 Moment 对象表示起始时间,另一个 Moment 对象表示结束时间。如果你需要在表单回显这个时间范围,可以使用 Moment.js 的 `format()` 方法将 Moment 对象转换为指定格式的字符串。 下面是一个示例代码,展示了如何将 `RangePicker` 组件选择的时间范围以指定的格式回显到表单的文本框: ```jsx import { Form, DatePicker } from 'antd'; import moment from 'moment'; const dateFormat = 'YYYY-MM-DD'; function MyForm() { const [form] = Form.useForm(); // 初始化表单数据 const initialValues = { rangeTime: [moment('2021-01-01', dateFormat), moment('2021-01-31', dateFormat)], }; return ( <Form form={form} initialValues={initialValues}> <Form.Item name="rangeTime" label="时间范围"> <DatePicker.RangePicker format={dateFormat} /> </Form.Item> <Form.Item name="rangeTimeString" label="时间范围(字符串)"> <input value={form.getFieldValue('rangeTime').map(m => m.format(dateFormat)).join(' ~ ')} readOnly /> </Form.Item> </Form> ); } export default MyForm; ``` 这里我们使用 `moment()` 函数创建了两个 Moment 对象,分别表示时间范围的起始和结束时间。在 `DatePicker.RangePicker` 组件,我们设置了 `format` 属性为 `'YYYY-MM-DD'`,表示用户选择的时间范围以此格式返回。在最后一个表单项,我们使用 `form.getFieldValue('rangeTime')` 获取用户选择的时间范围,并使用 `map()` 方法将每个 Moment 对象转换为指定格式的字符串,最后使用 `join()` 方法将起始和结束时间用 `' ~ '` 连接起来,显示在一个文本框

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值