Ant Design Pro,用setFieldsValue方法,给嵌套到Form表单中的DatePicker或RangePicker组件设置默认值

本文介绍如何在AntDesign中使用setFieldsValue或setState方法设置DatePicker的默认值,包括利用moment方法转换日期格式,适用于FormItem组件initialValue属性及form的setFieldsValue属性赋值。

其实用setFieldsValue或者获取setState方法都可以设置DatePicker的默认值。

但是关键点在于,引用moment方法转换日期格式

 

1、setState方法,利用FormItem组件的initialValue属性设置默认值:

import moment from 'moment';

this.setState({defaultDate}) // 自定义默认日期

<FormItem label="日期选择框">
    {getFieldDecorator('date', {
        initialValue: moment(this.state.defaultDate, 'YYYY-MM-DD'),
    })(
        <DatePicker format={'YYYY-MM-DD'} />
    )}
</FormItem>

2、setFieldsValue方法,利用form的setFieldsValue属性赋值:

import moment from 'moment';

this.props.form.setFieldsValue({
    "date": moment("自定义默认日期", 'YYYY-MM-DD')
})

<FormItem label="日期选择框">
    {getFieldDecorator('date', {
        rules: [{ required: true }],
    })(
        <DatePicker format={'YYYY-MM-DD'} />
    )}
</FormItem>

RangePicker同理,只是 initialValue 变成了数组 [ moment( startDate ) , moment( endDate )]

### 如何在 Ant Design 表单中对 `DatePicker.RangePicker` 进行必填校验 Ant Design 提供了一个强大的表单组件 `Form` 和日期选择器组件 `DatePicker`,其中 `RangePicker` 是用于选择时间范围的一个子组件。为了实现必填校验功能,可以通过设置 `rules` 属性来定义验证逻辑。 以下是具体实现方法: #### 使用 `Form.Item` 的 `rules` 属性进行校验 通过配置 `Form.Item` 组件中的 `rules` 属性,可以指定字段的校验规则。对于 `DatePicker.RangePicker` 来说,其返回值是一个数组 `[start, end]` 者 `null`。因此,可以通过自定义函数判断该值是否为空来进行必填校验[^1]。 ```jsx import React from 'react'; import { Form, DatePicker, Button } from 'antd'; const App = () => { const onFinish = (values) => { console.log('Success:', values); }; return ( <Form name="date_range_picker" onFinish={onFinish} > <Form.Item label="Date Range" name="dateRange" rules={[ { required: true, message: 'Please select a date range!', validator: (_, value) => { if (!value || !Array.isArray(value) || value.length === 0) { return Promise.reject(new Error('Date range is required!')); } return Promise.resolve(); }, }, ]} > <DatePicker.RangePicker /> </Form.Item> <Form.Item> <Button type="primary" htmlType="submit"> Submit </Button> </Form.Item> </Form> ); }; export default App; ``` #### 关键点解析 - **必填校验**:当用户未选择任何日期时,`RangePicker` 返回的是 `null` 长度为零的数组。因此,在校验规则中需要检查这些情况并抛出错误提示[^2]。 - **自定义校验函数**:如果内置的 `required: true` 不足以满足需求,则可通过 `validator` 方法提供更复杂的校验逻辑[^3]。 #### 注意事项 - 如果希望进一步增强用户体验,可以在提交前显示更加详细的错误信息,比如提醒用户具体的起始时间和结束时间均不能为空。 - 需要确保所使用的 Ant Design 版本支持最新的 API 功能;不同版本间可能存在细微差异,请查阅官方文档确认兼容性[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值