当用户输入无效日期时,我正在尝试重置 react-datepicker 中的日期值/文本。这是代码:
class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
date: Date.now()
};
}
render() {
return (
<DatePicker
name="date"
selected={this.state.date && moment(this.state.date, "x")}
onChange={date => {
this.setState({
date: date.valueOf()
});
}}
onBlur={e => {
let date = moment(e.target.value, "LLL", true);
if (date.isValid()) {
this.setState({
date: date.valueOf() // apply good value
});
} else {
this.forceUpdate();
}
}}
showTimeSelect
timeFormat="HH:mm"
timeIntervals={30}
dateFormat="LLL"
timeCaption="Time"
minDate={moment().add(30, "minutes")}
/>
);
}
}
我试图将它放入 JSFiddle,但它似乎在渲染 react-datepicker 组件时遇到了问题,但是这个组件在我自己的代码中渲染得很好。
问题似乎forceUpdate
是没有触发组件的重置。我想知道重置是否只发生在日历选择本身而不是输入字段(这是我想要做的)。我尝试添加value
属性并将其设置为与属性相同的内容,selected
但它没有效果。验证正在触发并按预期工作,但输入字段文本的重新呈现不是。