存储和更新存储的对象
Store and update a stored Object
我试图在 AsyncStorage 中存储一个对象,然后检索它并将其与当前对象合并并再次保存,从而始终保持和更新对象。我真的很难理解你应该如何存储和操作它,有什么建议吗?这是在组件中完成的,当组件和应用程序加载时将挂载 ps 我只设法用所有对象创建一个新数组元素
检索方法
_retrieveObj = async () => {
try {
const value = await AsyncStorage.getItem('OBJECT');
if (value !== null) {
return JSON.parse(value);
}
return [];
} catch (error) {
// Error retrieving data
}
};
存储方法
_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)
}
};
在组件内调用
_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);
}
合并对象的方法(网上找的)
_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;
};
谢谢
您获得数组的原因是因为您在 _storeObj 函数中保存对象数组。看起来您已经将现有对象和新对象合并为一个,因此您只需保存合并结果即可。你不应该需要你的 _storeObj 函数。
_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);
}
我试图在 AsyncStorage 中存储一个对象,然后检索它并将其与当前对象合并并再次保存,从而始终保持和更新对象。我真的很难理解你应该如何存储和操作它,有什么建议吗?这是在组件中完成的,当组件和应用程序加载时将挂载 ps 我只设法用所有对象创建一个新数组元素
检索方法
_retrieveObj = async () => {
try {
const value = await AsyncStorage.getItem('OBJECT');
if (value !== null) {
return JSON.parse(value);
}
return [];
} catch (error) {
// Error retrieving data
}
};
存储方法
_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)
}
};
在组件内调用
_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);
}
合并对象的方法(网上找的)
_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;
};
谢谢
您获得数组的原因是因为您在 _storeObj 函数中保存对象数组。看起来您已经将现有对象和新对象合并为一个,因此您只需保存合并结果即可。你不应该需要你的 _storeObj 函数。
_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);
}