2017-06-21 105 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方法。它的结果会告诉你用户选择了什么。

相关问题