我正在尝试使用异步存储来存储两个作为对象存储的文本输入值,并将其传递到不同的视图,在这些视图中,它们将在按下按钮时显示出来。
正如其他StackOverflow帖子中提到的那样,我仍然使用JSON.parse和JSON.stringify将对象作为JSON数据传递,但由于某些原因,我仍然收到错误JSON Parse Error:意外标识符“ Undefined”( )
class AddData extends React.Component {
constructor(props) {
super(props);
this.state = {
text1: '' ,
text2: ''
};
}
render() {
function BtnPress() {
alert('Hi')
}
return (
<View style={{flex: 1, flexDirection: 'column', justifyContent:'center', alignItems: 'center'}}>
<TextInput
style={{height: 40,width:200}}
onChangeText={(text1) => this.setState({input1: text1})}
/>
<TextInput
style={{height: 40,width:200}}
onChangeText={(text2) => this.setState({input2: text2})}
/>
<Button
onPress={() => {
AsyncStorage.setItem('user', JSON.stringify({
name:'Rohit',
email: 'rohitgird12gmail.com'
}));
this.props.navigation.navigate('Home', {});
}}
title="Submit"
/>
</View>
);
}
}
class DetailsScreen extends React.Component {
displayName = async ()=> {
try {
const myArray = await AsyncStorage.getItem('user');
if (myArray !== null) {
alert(JSON.parse(myArray.name));
}
} catch (error) {
alert(error)
}
}
render() {
return (
<View style={{flex: 1, flexDirection: 'column', justifyContent:'center', alignItems: 'center'}}>
<Button
onPress={this.displayName}
title="Get Data"
/>
</View>
);
}
}
答案 0 :(得分:2)
仅当您为get
辩护时,const myArray = await AsyncStorage.getItem('user');
似乎正在返回undefined
,这在这里还不够。
另一个可能的问题在这里:null
。您确定不应该使用JSON.parse(myArray.name)
吗?