我正在尝试使用AsyncStorage将用户输入的数据保存到本地设备。 我遵循了一些这样的示例,例如复制粘贴并进行了一些更改。 因为我是初级工程师,所以我无法完全理解这些代码的含义。
但是我不能。
除此之外,我不想使用Redux。 哪个错了?
下面的代码是我的代码。
state = {
fullname: '';
}
componentDidMount() {
AsyncStorage.getItem('inputText')
.then((value) => {
if (value !== null) {
this.setState({ fullname: value });
}
});
}
handleOnpress() {
const db = firebase.firestore();
const { currentUser } = firebase.auth();
db.collection(`users/${currentUser.uid}/form1`).add({
form1 : [
{ fullname: this.state.fullname },
})
.then(() => {
this.props.navigation.goBack();
})
.catch((error) => {
console.log(error);
});
}
render() {
return (
<ScrollView style={styles.container}>
<InfoHeader navigation={this.props.navigation}>
申請者情報1
</InfoHeader>
<Notes />
<QuestionTextSet
onChangeText={(text) => {
this.setState({ fullname: text });
AsyncStorage.setItem('inputText', text);
}}
placeholder={'例:留学太郎'}
value={this.state.fullname}
editable = {true}
>
姓名(漢字表記)
</QuestionTextSet>
答案 0 :(得分:0)
如果您使用AsyncStorage.setItem('inputText', text);
可能是捕获错误,未定义不是setItem函数参数中的回调函数。
所以您应该使用AsyncStorage.setItem('inputText', text, (e)=>{})
;
一旦您要存储对象,请使用:
AsyncStorage.setItem('key', JSON.stringify(object), (e)=>{})
;
并通过以下方式获取它:
AsyncStorage.getItem('key', (e, v) => {
if (!e) {
/**
* your value
*/
const object = JSON.parse(v);
}
});