React Datepicker - 当我绑定启用 e.preventDefault() 时显示错误的日期
React Datepicker - wrong date showing when I bind to enable e.preventDefault()
日期选择器正在检测正确的日期,但表单正在刷新。
所以,我在函数中插入了 e.preventDefault()。
这给了我一个错误,说 e.preventDefault() 不是函数。
所以我把函数改为使用bind
onChange={(event)=> this.changeStartDetails.bind(this)}
但是现在,无论我 select 是什么日期,datePicker 都会将其注册为今天午夜。
我哪里错了?
完整代码在这里
摘要代码如下:
constructor(){
super()
this.changeStartDetails= this.changeStartDetails.bind(this)
}
changeStartDetails(e){
e.preventDefault()
console.log('e', e)
console.log('moment(e)', moment(e).format('DD MM YY HH:mm'))
console.log('moment()', moment().format('DD MM YY HH:mm'));
console.log('!moment(e).isAfter(moment())', !moment(e).isAfter(moment()));
}
<form>
<DatePicker
className="datePicker"
timeIntervals={15}
selected={this.state.startDetails}
onChange={(event)=> this.changeStartDetails.bind(this)}
showTimeSelect
dateFormat="d MMM yyyy HH:mm"
required
placeholderText={'Date & Time Event Starts'}
/>
</form>
你错了,
onChange={(event)=> this.changeStartDetails.bind(this)}
您错误地绑定了事件侦听器并且还调用了回调函数。
你的意思可能是这样的,
onChange={this.changeStartDetails.bind(this)}
或者,
onChange={event => this.changeStartDetails(event)}
编辑:
在这个测试中一切正常,也没有任何形式刷新。
function App() {
const [sdate, setSDate] = useState(new Date());
return (
<div className="App">
<DatePicker
className="datePicker"
timeIntervals={15}
selected={sdate}
onChange={(event) => {
console.log('onChange', event);
setSDate(event);
}}
showTimeSelect
dateFormat="d MMM yyyy HH:mm"
required
placeholderText={'Date & Time Event Starts'}
/>
</div>
);
}
日期选择器正在检测正确的日期,但表单正在刷新。
所以,我在函数中插入了 e.preventDefault()。
这给了我一个错误,说 e.preventDefault() 不是函数。
所以我把函数改为使用bind
onChange={(event)=> this.changeStartDetails.bind(this)}
但是现在,无论我 select 是什么日期,datePicker 都会将其注册为今天午夜。
我哪里错了?
完整代码在这里
摘要代码如下:
constructor(){
super()
this.changeStartDetails= this.changeStartDetails.bind(this)
}
changeStartDetails(e){
e.preventDefault()
console.log('e', e)
console.log('moment(e)', moment(e).format('DD MM YY HH:mm'))
console.log('moment()', moment().format('DD MM YY HH:mm'));
console.log('!moment(e).isAfter(moment())', !moment(e).isAfter(moment()));
}
<form>
<DatePicker
className="datePicker"
timeIntervals={15}
selected={this.state.startDetails}
onChange={(event)=> this.changeStartDetails.bind(this)}
showTimeSelect
dateFormat="d MMM yyyy HH:mm"
required
placeholderText={'Date & Time Event Starts'}
/>
</form>
你错了,
onChange={(event)=> this.changeStartDetails.bind(this)}
您错误地绑定了事件侦听器并且还调用了回调函数。
你的意思可能是这样的,
onChange={this.changeStartDetails.bind(this)}
或者,
onChange={event => this.changeStartDetails(event)}
编辑: 在这个测试中一切正常,也没有任何形式刷新。
function App() {
const [sdate, setSDate] = useState(new Date());
return (
<div className="App">
<DatePicker
className="datePicker"
timeIntervals={15}
selected={sdate}
onChange={(event) => {
console.log('onChange', event);
setSDate(event);
}}
showTimeSelect
dateFormat="d MMM yyyy HH:mm"
required
placeholderText={'Date & Time Event Starts'}
/>
</div>
);
}