json - JSON 解析错误:意外的标识符“未定义”(React Native)
问题描述
我正在尝试使用异步存储来存储存储为对象的两个文本输入值,并将其传递到不同的视图,它们将在按下按钮时显示。
正如在其他 StackOverflow 帖子中提到的,我使用 JSON.parse 和 JSON.stringify 将对象作为 JSON 数据传递,但由于某种原因,我仍然收到错误 JSON Parse Error: Unexpected Identifier "Undefined"(React Native)
添加数据
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>
);
}
}
解决方案
看起来就像是在您保护自己的同时const myArray = await AsyncStorage.getItem('user');
返回,这还不够。undefined
null
Antoher 可能的问题在于:JSON.parse(myArray.name)
。你确定它不应该是JSON.parse(myArray).name
吗?
推荐阅读
- sass - Gulp watch 只执行一次
- coq - 教堂数字
- html - CSS Grid auto-fit 和 min-max 留下空白
- javascript - 联系我们表单没有将所有填充字段发送到电子邮件,只有几个?PHP AJAX JS
- android - 如何在 Flutter 中创建一个按钮表并从中随机选择任何按钮?
- css - 带有 :before 和 :after 边框的 CSS 点
- c++ - 静态成员的方法
- angular - 从 Angular 4 中的普通集合重构代码以使用 rxjs 可观察对象
- ruby-on-rails - 使用不同的布局时,Rails Authenticity Token 无效
- python - 如何使用预训练的 keras 模型作为模型添加函数的参数?