我正在尝试使用React DatePickerAndroid
。但是我想在组件的初始负载上展示它。但问题是,DatePickerAndroid
是一个promise
(见文档),我无法在初始呈现时加载它。
因此,我所拥有的是:
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子对象无效(找到:带有键的对象({_45、_81、_64、_54})。.
知道怎么处理吗?
发布于 2017-06-21 00:35:55
实际上,您试图呈现open
的结果,根据文档,它告诉您用户选择了什么。因此,您可能不希望呈现它,也不希望它在您的呈现函数中的任何位置。
添加一个按钮来打开日期选择器,当按下时调用open
方法。它的结果将告诉您用户选择了什么。
https://stackoverflow.com/questions/44669289
复制