所以,我有这个reminder componenttextInput 从 react-native 导入,DatePicker 从原生库导入,还有一个按钮可以在单击事件时保存表单。
现在当我点击日期选择器时,它给出了一个错误说:value for date cannot be cast from string to double。我还附上了错误的屏幕截图。
不知道我哪里出错了。
这是组件的代码。
class Reminder extends Component {
constructor(props) {
super(props);
let formatDate = new Date();
this.state = {
chosenDate: formatDate.toISOString().split('T')[0],
text: '',
};
this.handleChangeInput = this.handleChangeInput.bind(this);
this.saveData = this.saveData.bind(this);
}
render() {
const {chosenDate} = this.state;
return (
<View>
<Form style={styles.formContainer}>
<View style={styles.formView}>
< TextInput
placeholder = "Set your reminder"
onChangeText={this.handleChangeInput}
value={this.state.text}
/>
<DatePicker
defaultDate={chosenDate}
mode = "date"
animationType={"fade"}
androidMode={"default"}
placeHolderText="Select date"
textStyle={{ color: "green" }}
placeHolderTextStyle={{ color: "#d3d3d3" }}
onDateChange={(chosenDate) => this.setState({chosenDate})}
/>
<Text style={styles.datePicker}>
{chosenDate}
</Text>
</View>
<View style={styles.footer}>
<Button block success style={styles.saveBtn}
onPress={ () =>
{
this.saveData()
//console.log('save data', fomattedState);
Alert.alert('Yay!!', 'Succefully saved.')
}
}
>
<Icon type='MaterialIcons' name='done' />
</Button>
</View>
</Form>
</View>
);
}
handleChangeInput = (input) => {
this.setState({
text: input
});
}
//save the input
saveData() {
let {chosenDate, ...restOfState} = this.state;
let textArray = Object.entries(restOfState).map(([key, value])=> ({[key]: value}));
let fomattedState = {[chosenDate]:textArray};
console.log('formatted state', fomattedState);
AsyncStorage.setItem("key", JSON.stringify(this.fomattedState));
}
}
