Using input field with state
This example shows how to handle the state in the parent component. Note that disabled days cannot be picked from the overlay, but they may be set in the input field.
Code
import React from 'react';
import DayPickerInput from 'react-day-picker/DayPickerInput';
import 'react-day-picker/lib/style.css';
export default class Example extends React.Component {
constructor(props) {
super(props);
this.handleDayChange = this.handleDayChange.bind(this);
this.state = {
selectedDay: undefined,
isEmpty: true,
isDisabled: false,
};
}
handleDayChange(selectedDay, modifiers, dayPickerInput) {
const input = dayPickerInput.getInput();
this.setState({
selectedDay,
isEmpty: !input.value.trim(),
isDisabled: modifiers.disabled === true,
});
}
render() {
const { selectedDay, isDisabled, isEmpty } = this.state;
return (
<div>
<p>
{isEmpty && 'Please type or pick a day'}
{!isEmpty && !selectedDay && 'This day is invalid'}
{selectedDay && isDisabled && 'This day is disabled'}
{selectedDay &&
!isDisabled &&
`You chose ${selectedDay.toLocaleDateString()}`}
</p>
<DayPickerInput
value={selectedDay}
onDayChange={this.handleDayChange}
dayPickerProps={{
selectedDays: selectedDay,
disabledDays: {
daysOfWeek: [0, 6],
},
}}
/>
</div>
);
}
}
Result
Please type or pick a day