2017-06-21 108 views
0

我正在嘗試使用React Native的DatePickerAndroid。但我想在組件的初始加載時顯示它。但問題是,DatePickerAndroidpromisesee docs),我不能在初始渲染時加載它。如何在初始加載React Native組件時呈現諾言

因此,我有什麼是:

render(){ 
    let datePicker = <DatePickerIOS date={this.state.selectedValue} mode="date" timeZoneOffsetInMinutes={this.state.timeZoneOffsetInHours * 60} onDateChange={(date) => { this.setState({selectedValue: date})}} />; 
    if (Platform.OS === "android"){ 
     datePicker = this.showAndroidDatePicker() 
    } 

    return(
     <View>   
      {datePicker} 
     </View> 
    ) 
} 

哪裏showAndroidDatePicker功能如文檔:

showAndroidDatePicker = async() => { 
    try { 
     const {action, year, month, day} = await DatePickerAndroid.open({ 
      date: this.state.selectedValue 
     }); 
     if (action !== DatePickerAndroid.dismissedAction) { 
      var date = new Date(year, month, day); 
      this.setState({selectedValue: date.toLocaleDateString()}); 
     } 
    }catch ({code, message}) { 
     console.warn('Cannot open date picker', message); 
    } 
}; 

但是當我在android運行它,我得到大紅色屏幕的錯誤:

對象作爲React Child無效(找到:帶鍵的對象({_45, _81,_64,_54})。 ......

任何想法如何處理它?

回答

0

你有效地嘗試渲染open的結果,根據文檔告訴你用戶選擇了什麼。所以你可能不想渲染它或在你的渲染函數中的任何地方。

添加一個按鈕來打開日期選擇器,當按下時調用open方法。它的結果會告訴你用戶選擇了什麼。

相關問題