我试图添加AirBnB React-dates。除了一件事之外的所有功能都工作(不打开已选择日期的月份)。
当我指定开始日期和结束日期时,它会选择范围但不显示所选月份。它显示当前月份。
例如:如果我设置开始日期= 2017-05-05并结束日期= 2017-05-09然后它显示选择,但在下一次日历选择器打开它只显示当前月份,所以我必须单击下个月,下个月要查看之前选定的日期;
我的代码:
import React from 'react';
import ReactDOM from 'react-dom';
import moment from 'moment';
import { DateRangePicker } from 'react-dates';
var SelectedStartDate = moment('2017-05-05');
var SelectedEndDate = moment('2017-05-09');
class HomePageDatePicker extends React.Component {
constructor(props) {
super(props);
this.state = {
focusedInput: null,
startDate: SelectedStartDate,
endDate:SelectedEndDate
};
this.onDatesChange = this.onDatesChange.bind(this);
this.onFocusChange = this.onFocusChange.bind(this);
}
onDatesChange({ startDate, endDate }) {
this.setState({ startDate, endDate });
}
onFocusChange(focusedInput) {
this.setState({ focusedInput });
}
render() {
const { focusedInput, startDate, endDate } = this.state;
return (
<div>
<DateRangePicker
{...this.props}
onDatesChange={this.onDatesChange}
onFocusChange={this.onFocusChange}
focusedInput={focusedInput}
startDate={startDate}
endDate={endDate}
startDateId="datepicker_start_home"
endDateId="datepicker_end_home"
startDatePlaceholderText="Check In"
endDatePlaceholderText="Check Out"
/>
</div>
);
}
}
打开拣货员时,它会显示2月份而不是5月份。
答案 0 :(得分:1)
您需要添加一个如下所示的选定状态:
import React from 'react';
import ReactDOM from 'react-dom';
import moment from 'moment';
import { DateRangePicker } from 'react-dates';
var SelectedStartDate = moment('2017-05-05');
var SelectedEndDate = moment('2017-05-09');
class HomePageDatePicker extends React.Component {
constructor(props) {
super(props);
this.state = {
focusedInput: null,
startDate: SelectedStartDate,
endDate:SelectedEndDate
};
this.onDatesChange = this.onDatesChange.bind(this);
this.onFocusChange = this.onFocusChange.bind(this);
}
onDatesChange({ startDate, endDate }) {
this.setState({ startDate, endDate });
}
onFocusChange(focusedInput) {
this.setState({ focusedInput });
}
render() {
const { focusedInput, startDate, endDate } = this.state;
return (
<div>
<DateRangePicker
{...this.props}
onDatesChange={this.onDatesChange}
onFocusChange={this.onFocusChange}
focusedInput={focusedInput}
//Here is the change:
date={startDate}
startDate={startDate}
endDate={endDate}
startDateId="datepicker_start_home"
endDateId="datepicker_end_home"
startDatePlaceholderText="Check In"
endDatePlaceholderText="Check Out"
/>
</div>
);
}
}
答案 1 :(得分:0)
尝试使用DateRangePicker的这个道具
initialVisibleMonth={() => startDate}