2017-08-02 35 views
0

我有一個多表單組件的子步驟。在其中一個組件上,我試圖實現YouCanBookMe DatePickerReact Datepicker輸入狀態不變?

現在,當我嘗試更新datepicker值的狀態,就像我對其他常規文本輸入所做的那樣,狀態不會更新。如果我輸入日期,狀態會得到更新,但當我實際從選取器中選擇日期時不會。我真的無能爲力。你們能否指出爲什麼它沒有?

非常感謝您的幫助。我是React的新手,我嘗試了3個不同的Datepicker庫,並且我慢慢地瘋了,因爲沒有人能夠工作,或者我無法將其轉換爲父子結構。謝謝!

家長:

constructor(props) { 
 
    super(props); 
 

 
    this.state = { 
 
     wants_interview_date: moment().format("DD-MM-YYYY") 
 
\t } 
 
    } 
 
    
 
handleChange(field) { 
 
    return (evt) => this.setState({ [field]: evt.target.value }); 
 
} 
 
    
 
render(){ 
 
    return <FormStep8 
 
     wants_interview_date={this.state.wants_interview_date} 
 
     onDateChange={this.handleChange('wants_interview_date')} />; 
 
} 
 

子組件:

render() { 
 
    <Datetime 
 
    timeFormat={false} 
 
    dateFormat="DD-MM-YYYY" 
 
    inputProps={{id: 'wants_interview_date', onBlur: this.props.onDateChange, value: this.props.wants_interview_date}} //To get the regular HTML input props 
 
    /> 
 
}

+0

你從哪裏得到'evt'? –

+0

@MuratK。我不。我不完全理解StateChange方法,但它適用於普通的文本輸入。我從[本教程]中獲得了它(https://goshakkk.name/wizard-form-collect-info/) – Doge

回答

0

此代碼段工作正常,我,進口日期時間(人均L T)

import DateTime from 'react-datetime'; 

<DateTime name="newapp_time" 
onChange={(e) => { this.setState({ newapp_time: moment(e).toJSON() }) }} /> 

結果是在這種情況下

+0

如果使用道具更新狀態,它會起作用嗎?因爲那是我當前的問題 – Doge

+0

你是不是說,用道具設置初始狀態? –

+0

你說過,如果你從picker中選擇日期,那麼狀態不起作用,對吧?如果是這種情況,我的解決方案將起作用。我也遇到了datetime包的問題。但是這個對我來說工作得很好。請嘗試一下並讓我知道。 :) –

0

Reactiflux的好朋友幫我解決這個問題的時間戳。顯然Moment.js正在返回一個對象handleChange,因此該州沒有顯示任何東西。輸出需要使用_d Moment.js方法。這裏是正確的handleChange方法:

handleDateChange(field) { 
    return evt => { 
     const value = evt._d; 
     this.setState({ wants_interview_date: value }); 
    }; 
    }