更改结束日期时如何触发方法
How can I trigger a method when end date is changed
我正在使用 Airbnb react-dates。我已将它添加到我的项目中并且工作正常,组件如下所示:
<DateRangePicker
startDate={this.state.startDate} // momentPropTypes.momentObj or null,
startDateId="your_unique_start_date_id" // PropTypes.string.isRequired,
endDate={this.state.endDate} // momentPropTypes.momentObj or null,
endDateId="your_unique_end_date_id" // PropTypes.string.isRequired,
onDatesChange={this.onDatesChange} // PropTypes.func.isRequired,
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,
onFocusChange={focusedInput => this.setState({ focusedInput })} // PropTypes.func.isRequired,
daySize={50}
noBorder={true}
isOutsideRange={() => false}
/>
我刚刚将它添加到我的项目中,如您所见,我的方法 onDatesChange 一切正常,但我想知道如何在选择 END_DATE
时触发某些方法。
例如,我想在触摸结束日期时过滤一些内容...
您需要在onDatesChange
中添加回调 属性:
<DateRangePicker
{...dateRangePickerProps}
onDatesChange={({ endDate }) => {
console.log("End Date change callback"); // Your callback
}}
/>;
您需要使用onFocusChange
and onDatesChange
props of <DateRangePicker>
, and also componentDidUpdate()
React 生命周期方法:
import React, { Component } from "react";
import "react-dates/initialize";
import "react-dates/lib/css/_datepicker.css";
import { DateRangePicker } from "react-dates";
import { START_DATE, END_DATE } from "react-dates/constants";
export default class Dates extends Component {
state = {
startDate: null,
endDate: null,
focusedInput: null
};
onDatesChange = ({ startDate, endDate }) =>
this.setState({ startDate, endDate });
onFocusChange = focusedInput => this.setState({ focusedInput });
componentDidUpdate(prevProps, prevState) {
if (
prevState.focusedInput !== this.state.focusedInput &&
this.state.focusedInput === END_DATE
) {
alert("End date is focused!"); // your code here
}
if (prevState.endDate !== this.state.endDate) {
alert("End date is changed!"); // your code here
}
}
render() {
const { startDate, endDate, focusedInput } = this.state;
return (
<DateRangePicker
startDate={startDate}
startDateId={START_DATE}
endDate={endDate}
endDateId={END_DATE}
onDatesChange={this.onDatesChange}
focusedInput={focusedInput}
onFocusChange={this.onFocusChange}
/>
);
}
}
我正在使用 Airbnb react-dates。我已将它添加到我的项目中并且工作正常,组件如下所示:
<DateRangePicker
startDate={this.state.startDate} // momentPropTypes.momentObj or null,
startDateId="your_unique_start_date_id" // PropTypes.string.isRequired,
endDate={this.state.endDate} // momentPropTypes.momentObj or null,
endDateId="your_unique_end_date_id" // PropTypes.string.isRequired,
onDatesChange={this.onDatesChange} // PropTypes.func.isRequired,
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,
onFocusChange={focusedInput => this.setState({ focusedInput })} // PropTypes.func.isRequired,
daySize={50}
noBorder={true}
isOutsideRange={() => false}
/>
我刚刚将它添加到我的项目中,如您所见,我的方法 onDatesChange 一切正常,但我想知道如何在选择 END_DATE
时触发某些方法。
例如,我想在触摸结束日期时过滤一些内容...
您需要在onDatesChange
中添加回调 属性:
<DateRangePicker
{...dateRangePickerProps}
onDatesChange={({ endDate }) => {
console.log("End Date change callback"); // Your callback
}}
/>;
您需要使用onFocusChange
and onDatesChange
props of <DateRangePicker>
, and also componentDidUpdate()
React 生命周期方法:
import React, { Component } from "react";
import "react-dates/initialize";
import "react-dates/lib/css/_datepicker.css";
import { DateRangePicker } from "react-dates";
import { START_DATE, END_DATE } from "react-dates/constants";
export default class Dates extends Component {
state = {
startDate: null,
endDate: null,
focusedInput: null
};
onDatesChange = ({ startDate, endDate }) =>
this.setState({ startDate, endDate });
onFocusChange = focusedInput => this.setState({ focusedInput });
componentDidUpdate(prevProps, prevState) {
if (
prevState.focusedInput !== this.state.focusedInput &&
this.state.focusedInput === END_DATE
) {
alert("End date is focused!"); // your code here
}
if (prevState.endDate !== this.state.endDate) {
alert("End date is changed!"); // your code here
}
}
render() {
const { startDate, endDate, focusedInput } = this.state;
return (
<DateRangePicker
startDate={startDate}
startDateId={START_DATE}
endDate={endDate}
endDateId={END_DATE}
onDatesChange={this.onDatesChange}
focusedInput={focusedInput}
onFocusChange={this.onFocusChange}
/>
);
}
}