javascript - 如何将多个项目推入一个数组并加载到本机反应的异步存储中?
问题描述
我正在尝试以本机反应将数据推送到本地存储中,在这种情况下推送多个元素。我正在尝试使用此处指出的文档:
我将如何正确地做到这一点?下面是一些代码:
我目前在做什么
const STORAGE_KEY = '@save_enableauto';
const DBLTIME_KEY = '@save_dbltime';
state={
times: Times,
messageTimes: {
dblTime: '12:00 pm',
genTime: '12:00 pm'
}
enableAuto:false
}
//retrieves automatic messaging status
_retrieveData = async () => {
try {
//pull data from local storage
const enableAuto = await AsyncStorage.getItem(STORAGE_KEY);
const dblTime = await AsyncStorage.getItem(DBLTIME_KEY);
console.log('auto messages set: ',enableAuto);
console.log('time data is:', dblTime);
//reset state for time if it exists in local storage
if(dblTime !==null) {
this.setState(prevState => ({
messageTimes: { // object that we want to update
...prevState.messageTimes, // keep all other key-value pairs
dblTime: dblTime // update the value of specific key
}
}))
}
//reset state for notifications if exists in local storage
if (enableAuto !== null) {
// We have data!!
console.log('receiving from local storage: ',enableAuto);
this.setState({ enableAuto:eval(enableAuto) });
}
} catch (error) {
alert('failed to load previous settings.')
// Error retrieving data
}
};
//trying to set it up with one call
_retrieveDataGroup = async () => {
const items = JSON.stringify([['k1', STORAGE_KEY], ['k2', DBLTIME_KEY]]);
try {
const localData = AsyncStorage.multiGet(items, () => {
//to do something
});
console.log('Group fetch: ',localData);
} catch (error) {
alert('failed to load previous settings.')
// Error retrieving data
}
};
现在,当控制台日志记录组获取是一个承诺时,我收到的内容是:
Group fetch: Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
解决方案
multiGet
是一个承诺。await
在调用它之前添加。
const localData = await AsyncStorage.multiGet(items, () => {
//to do something
});
推荐阅读
- matlab - 如何在 Matlab 中创建正弦模式?
- impala - 还有其他使用Hue的方法吗----不是必须添加Linux用户名与Hue用户名相同吗?
- java - 如果员工高于或低于某个温度,我将如何返回 true?
- c++ - 快速打印时黑色方形字符显示不正确
- android - Android studio AVD trouble with rotate
- java - Not getting expected results from a ListChangeListener on a TreeView selection model
- c - int64到IEEE double的按位转换?
- sql-server - Select from XML query
- r - In R, plot emmeans of glmmTMB linear model. Error in linkinv(summ$the.emmean) : could not find function "linkinv"
- javascript - Data bind visible is not working as expected