0

我正在使用 react-dateTime 版本“react-datetime”:“^2.8.10”,我使用的是默认值。当我单击编辑按钮时,我得到 react-dateTime 的默认值。但是当我更新数据并且我没有更改日期时间时。我想要那个默认值。当我更新数据而不更改日期时间时。我得到当前的日期时间。那么在这种情况下如何获得那个默认值。如何获取 react-DateTime 的 defaultValue?

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();
    },
4

1 回答 1

1

原因是,您正在state通过""(空白值)初始化值,并在用户更改日期时更新该值,否则不会。所以在这种情况下,当用户不更新值this.state.dateTimeStart.valueundefined,之前的值(默认值)将出现在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;
于 2017-06-07T11:16:06.073 回答