我正在使用AsyncStorage来存储数据。这是我存储数据的功能:
const profile = { userId, name, email };
await AsyncStorage.setItem('userProf', JSON.stringify(profile));
如果我访问console.log,尝试访问数据时出现问题:
async componentWillMount(){
const profile = await AsyncStorage.getItem('userProf');
console.log(profile);
}
{“ userId”:“ jefla3E0tjcJHhHKJK45QoIinB2”,“名称”:“ egfgege”,“电子邮件”:“ ergeg@egrge.com”}
现在,如果我只想获取电子邮件值,则可以尝试:
console.log(profile.email);
console.log(profile [0] .email);
它们都不起作用,我未定义为输出,请您帮忙。
答案 0 :(得分:0)
使用AsyncStorage.setItem( ... )
存储值时,可以使用JSON.stringify
将整个对象转换为String
。这意味着,如果要返回“普通” Object
(以使用点运算符),则必须使用JSON.parse
:
const profile = await AsyncStorage.getItem('userProf');
console.log(JSON.parse(profile));
答案 1 :(得分:0)
随着AsyncStorage接收并返回一个字符串,您将需要将该字符串解析为json。您已经在使用JSON.stringify
保存对象,您需要执行相反的操作才能使其恢复为对象。
const savedProfile = await AsyncStorage.getItem('userProf');
const profile = JSON.parse(savedProfile);
然后,您应该能够像平常一样访问它的属性,例如
const userId = profile.userId;
const email = profile.email;
const name = profile.name;
您可能要确保执行检查,以确保AsyncStorage返回的值不为null,因为这会给您带来麻烦。此外,await
函数可能会抛出,因此您应确保将对AsyncStorage的调用包装在try/catch
async componentWillMount(){
try {
const savedProfile = await AsyncStorage.getItem('userProf');
// you should check that the savedProfile is not null here
const profile = JSON.parse(savedProfile);
const userId = profile.userId;
const email = profile.email;
const name = profile.name;
} catch (err) {
console.warn(err);
}
console.log(profile);
}