无法在日期范围选择器-js反应中设置默认值

时间:2020-01-09 07:43:11

标签: javascript html reactjs react-native antd

我正在使用ant js中的日期范围选择器。 https://ant.design/components/date-picker/

我可以从start and end date获取date picker并将其设置在states中。 但是,如果我想将defaut值设置为日期选择器,则无法设置它。 它显示以下错误:

react-dom.production.min.js?ca5d:196 Error: The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, 

这是代码:

import React from 'react';
import { DatePicker} from 'antd';

class DataCheck extends React.Component {
    state = { startDate:"",endDate:""}

    onDateChange(date) {
        this.setState({startDate:date[0]['_d'],endDate: date[1]['_d']})
    }
    onInitialDateSet(){
        var end_date = new Date();
        end_date.setDate(end_date.getDate()-15)
        this.setState({startDate:new Date(), endDate:end_date})
    }
    componentDidMount(){
        this.onInitialDateSet()
    }
    render() {
        const { RangePicker } = DatePicker;
        return (
            <div>
                <RangePicker defaultValue ={[moment(this.state.startDate), moment(this.state.endDate)]} size={'small'} onChange={this.onDateChange.bind(this)} /> 
            </div>
        );
    }
}
export default DateCheck

为我提供一些解决方案。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。在我的情况下,我收到的字符串数组中的日期,必须在RangePicker中预先填充。后来我发现,它只需要typeof moment.Moment对象,而无需任何其他操作。所以我创建了一个像这样的函数:

private formatStringsToDate = (dates: Array<string>) => dates.map((date: string) => moment(date));