如何获取 YouCanBookMe/react-datetime 组件的 defaulValue?
How to get defaulValue of YouCanBookMe/react-datetime component?
我使用的是 react-dateTime 版本"react-datetime": "^2.8.10",
我正在使用默认值。当我点击编辑按钮时,我得到了 react-dateTime 的默认值。但是当我更新数据并且我没有更改 datetime.I 想要那个 defaultValue.and 当我更新数据而不更改日期 - time.i 在这种情况下获取当前日期 - time.Then如何获得该默认值。
如何获取react-DateTime的默认值?
renderForm:function(){
var yesterday = Datetime.moment().subtract( 1, 'day' );
var valid = function( current ){
return current.isAfter( yesterday );
};
var dateTimeStart=moment(this.props.todo_start_at);
var dateTimeEnd=moment(this.props.todo_end_at);
console.log("dateTimeStart ",dateTimeStart)
console.log("dateTimeEnd ",dateTimeEnd)
return(
<form onSubmit={this.handleUpdate}>
<input type="text"ref={(value)=>{
this.input=value
}}defaultValue={this.props.todo_text}/>
<div className="column medium-4">
When To Start
<Datetime input={ true } isValidDate={ valid } dateFormat="YYYY-MM-DD" defaultValue= { dateTimeStart }onChange={ this.handleDateTimeStart } />
</div>
<div className="column medium-4">
When To End
<Datetime input={ true } isValidDate={ valid } dateFormat="YYYY-MM-DD" defaultValue= { dateTimeEnd }onChange={ this.handleDateTimeEnd } />
</div>
<br/>
<button type="button" className="button" onClick={this.handleUpdate}>Update</button>
</form>
)
},
处理更新
handleUpdate:function(event){
event.preventDefault();
//console.log(this.dateTimeStart.value);
var startDate=this.state.dateTimeStart.value;
console.log(startDate);
var todoStartDate= moment(startDate).format('YYYY-MM-DD HH:mm');
var dueDate=this.state.dateTimeEnd.value;
var todoEndDate=moment(dueDate).format('YYYY-MM-DD HH:mm');
console.log("handle update",todoEndDate)
this.props.editTask(this.props.todo_id,this.input.value,todoStartDate,todoEndDate);
this.toggleState();
},
原因是,您正在用 ""
(空白值)初始化 state
值,并在用户更改日期时更新它,否则不会。因此,在这种情况下,当用户未更新值时,this.state.dateTimeStart.value
将变为 undefined
,之前的值(默认值)将出现在 this.props.todo_start_at
中。
当用户没有做任何更改时,您需要采用该默认值。
在 handleUpdate
方法中使用这些行:
var startDate = this.state.dateTimeStart.value || this.props.todo_start_at;
var dueDate = this.state.dateTimeEnd.value || this.props.todo_end_at;
我使用的是 react-dateTime 版本"react-datetime": "^2.8.10", 我正在使用默认值。当我点击编辑按钮时,我得到了 react-dateTime 的默认值。但是当我更新数据并且我没有更改 datetime.I 想要那个 defaultValue.and 当我更新数据而不更改日期 - time.i 在这种情况下获取当前日期 - time.Then如何获得该默认值。 如何获取react-DateTime的默认值?
renderForm:function(){
var yesterday = Datetime.moment().subtract( 1, 'day' );
var valid = function( current ){
return current.isAfter( yesterday );
};
var dateTimeStart=moment(this.props.todo_start_at);
var dateTimeEnd=moment(this.props.todo_end_at);
console.log("dateTimeStart ",dateTimeStart)
console.log("dateTimeEnd ",dateTimeEnd)
return(
<form onSubmit={this.handleUpdate}>
<input type="text"ref={(value)=>{
this.input=value
}}defaultValue={this.props.todo_text}/>
<div className="column medium-4">
When To Start
<Datetime input={ true } isValidDate={ valid } dateFormat="YYYY-MM-DD" defaultValue= { dateTimeStart }onChange={ this.handleDateTimeStart } />
</div>
<div className="column medium-4">
When To End
<Datetime input={ true } isValidDate={ valid } dateFormat="YYYY-MM-DD" defaultValue= { dateTimeEnd }onChange={ this.handleDateTimeEnd } />
</div>
<br/>
<button type="button" className="button" onClick={this.handleUpdate}>Update</button>
</form>
)
},
处理更新
handleUpdate:function(event){
event.preventDefault();
//console.log(this.dateTimeStart.value);
var startDate=this.state.dateTimeStart.value;
console.log(startDate);
var todoStartDate= moment(startDate).format('YYYY-MM-DD HH:mm');
var dueDate=this.state.dateTimeEnd.value;
var todoEndDate=moment(dueDate).format('YYYY-MM-DD HH:mm');
console.log("handle update",todoEndDate)
this.props.editTask(this.props.todo_id,this.input.value,todoStartDate,todoEndDate);
this.toggleState();
},
原因是,您正在用 ""
(空白值)初始化 state
值,并在用户更改日期时更新它,否则不会。因此,在这种情况下,当用户未更新值时,this.state.dateTimeStart.value
将变为 undefined
,之前的值(默认值)将出现在 this.props.todo_start_at
中。
当用户没有做任何更改时,您需要采用该默认值。
在 handleUpdate
方法中使用这些行:
var startDate = this.state.dateTimeStart.value || this.props.todo_start_at;
var dueDate = this.state.dateTimeEnd.value || this.props.todo_end_at;