我使用了materialui的DatePicker组件,我需要在一个函数中获取两个DatePicker组件的值来创建一个范围。
我创建了一个handleChange函数,它已经允许检索DatePicker组件的值但是对于2组件我不能这样做。
我想知道我需要采取的步骤。
这是我的代码:
import React from 'react';
import moment from 'moment';
import 'moment/locale/fr'
import DatePicker from 'material-ui/DatePicker';
import areIntlLocalesSupported from 'intl-locales-supported';
let DateTimeFormat;
if (areIntlLocalesSupported(['fr'])) {
DateTimeFormat = global.Intl.DateTimeFormat;
} else {
const IntlPolyfill = require('intl');
DateTimeFormat = IntlPolyfill.DateTimeFormat;
require('intl/locale-data/jsonp/fr');
require('intl/locale-data/jsonp/fa-IR');
}
class SearchByDate extends React.Component {
handleSearchByDate = (evt, date) => {
console.log(date)
}
render() {
return (
<div>
<DatePicker
ref="dateChoiceOne"
name="dateChoiceOne"
hintText="Date début"
DateTimeFormat={DateTimeFormat}
okLabel="OK"
cancelLabel="Annuler"
locale="fr"
onChange={this.handleSearchByDate}/>
<DatePicker
ref="dateChoiceTwo"
name="dateChoiceTwo"
hintText="Date fin"
DateTimeFormat={DateTimeFormat}
okLabel="OK"
cancelLabel="Annuler"
locale="fr"
onChange={this.handleSearchByDate} />
</div>
)
}
}
export default SearchByDate;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
&#13;
答案 0 :(得分:2)
由于第一个DatePicker和第二个DatePicker的日期选择在不同时间发生,因此您无法将2个日期作为参数添加到函数中。
相反,您应该创建2个不同的函数,每个函数对应一个DatePicker。这些函数会将日期保存为startDate
和endDate
,您可以在componentDidUpdate
中检查状态更新。一旦你设定了两个日期,你就可以做任何你想做的事。
class SearchByDate extends React.Component {
componentDidUpdate = () => {
if (this.state.startDate && this.state.endDate) {
// Both dates are set, do something with it
}
}
handleChangeStartDate = (evt, date) => {
this.setState({
startDate: date,
});
}
handleChangeEndDate = (evt, date) => {
this.setState({
endDate: date,
});
}
render() {
return (
<div>
<DatePicker
ref="dateChoiceOne"
name="dateChoiceOne"
hintText="Date début"
DateTimeFormat={DateTimeFormat}
okLabel="OK"
cancelLabel="Annuler"
locale="fr"
onChange={this.handleChangeStartDate}
/>
<DatePicker
ref="dateChoiceTwo"
name="dateChoiceTwo"
hintText="Date fin"
DateTimeFormat={DateTimeFormat}
okLabel="OK"
cancelLabel="Annuler"
locale="fr"
onChange={this.handleChangeEndDate}
/>
</div>
)
}
}