首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储和更新存储的对象

存储和更新存储的对象
EN

Stack Overflow用户
提问于 2019-01-24 19:11:03
回答 1查看 278关注 0票数 0

我试图将一个对象存储在AsyncStorage中,然后检索它并将其与当前的对象合并,然后再次保存它,从而始终保持和更新对象。我真的很难理解你应该如何储存和操纵这个,有什么建议吗?这是在组件和应用程序加载ps时挂载时完成的,我只设法使用所有对象创建一个新的数组元素。

检索方法

代码语言:javascript
复制
_retrieveObj = async () => {
try {
  const value = await AsyncStorage.getItem('OBJECT');
  if (value !== null) {
    return JSON.parse(value);
  }
  return [];
} catch (error) {
  // Error retrieving data
}
};

存储方法

代码语言:javascript
复制
_storeObj = async (obj) => {

let numberArray = [];
try {
  let storedNumbers = await AsyncStorage.getItem('OBJECT');
  if (storedNumbers !== null) {
    numberArray = JSON.parse(storedNumbers);
  }
  numberArray.push(obj)
  await AsyncStorage.setItem('OBJECT', JSON.stringify(numberArray));
} catch (error) {
  console.log(error)
}
};

组件内调用

代码语言:javascript
复制
 _UpdateAndSave = async (objToDisplay) => {

const storedObj = await this._retrieveObj();
if (storedObj !== objToDisplay) {
  const obj  = this._merge(storedObj ,objToDisplay);

  const objToSave = JSON.stringify(obj);
  this._storeObj(objToSave);
}

方法来合并对象(在线查找)

代码语言:javascript
复制
_merge = (a, b) => {
let c = {};
for(let idx in a) {
  c[idx] = a[idx];
}
for(let idx in b) {
  c[idx] = b[idx];
}
return c;
};

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 19:35:27

获得数组的原因是要在_storeObj函数中保存对象数组。看起来,您已经将现有的和新的对象合并为一个,所以您只需保存合并的结果。您不应该需要_storeObj函数。

代码语言:javascript
复制
_UpdateAndSave = async (objToDisplay) => {

const storedObj = await this._retrieveObj();
if (storedObj !== objToDisplay) {
  const obj  = this._merge(storedObj ,objToDisplay);

  const objToSave = JSON.stringify(obj);
  await AsyncStorage.setItem('OBJECT', objToSave);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54353766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档