存储异议是:
{
name: 'Chris',
age: 30,
traits: {
hair: 'brown',
eyes: 'brown'
},
};
无法检索value.propertyName。
AsyncStorage.getItem('key').then( (value) => console.log('value ', value, 'name is ', value.name));
输出为:值{“name”:“Chris”,“age”:30,“traits”:{“hair”:“brown”,“eyes”:“brown”}} name is undefined
请告诉我如何从承诺对象中检索特定值
答案 0 :(得分:9)
AsyncStorage 仅将数据保存为字符串。您只需在保存时使用JSON.stringify()
,在检索时使用JSON.parse()
。
例如:
AsyncStorage.getItem('key')
.then((value) => {
const data = JSON.parse(value);
console.log('name is ', data.name);
});
另一种选择是为AsyncStorage使用某种包装器,它可以为您执行此操作,例如:https://github.com/jasonmerino/react-native-simple-store
答案 1 :(得分:0)
Fore GetItem: const data = JSON.parse(await AsyncStorage.getItem('DataEnable')); this.setState({dataenable_user:data})
对于SetItem: 等待asyncStorage.setItem('DataEnable',JSON.stringify(this.state.dataenable_user));
答案 2 :(得分:0)
您可以将值设置为以下
async setAsyncStorage (key, value) {
try {
await AsyncStorage.setItem(key, JSON.stringify(value));
} catch (error) {
console.warn(error);
}
}
并获得以下信息:
async getAsyncStorage (key) {
try {
const getAsyncStorageData = await AsyncStorage.getItem(key);
const getAsyncStorageParsed = JSON.parse(getAsyncStorageData);
return getAsyncStorageParsed;
} catch (error) {
console.warn(error);
}
}