如何在 React Native 中使用 AsyncStorage 存储对象数组
How to store array of objects using AsyncStorage in react native
我正在尝试存储一个对象数组,其中每个对象都有一个字符串标签和相应的数组类型数据,例如:
arrayOfCategory=[
{label: "A", data: Array(36)}
{label: "B", data: Array(20)}
{label: "C", data: Array(20)}
.....
];
ScreenShoot of the array:
ScreenShoot of the inner array:
当我尝试像这样存储它时:
AsyncStorage.setItem("arrayOfCategoryStroage", JSON.stringify(arrayOfCategory));
如果我从存储中获取项目,我有一个空数组。
AsyncStorage.getItem('arrayOfCategoryStroage').then((value) => {
console.log(JSON.parse(value))
});
您获取物品的方式可能存在问题,并确保您的 Aysnc 存储没有在某处被清除,否则所有数据都将丢失。
您可以通过
设置项目
AsyncStorage.getItem('arrayOfCategoryStroage',JSON.stringify(data))
然后这样去取,看看有没有错误。
AsyncStorage.getItem('arrayOfCategoryStroage', (err, result) => {
if (result) {
const data= JSON.Parse(result);
}
}).catch(() => {
});
我尝试像这样分别存储每个项目标签:
AsyncStorage.setItem(item.label, JSON.stringify(data));
然后我得到它们中的每一个并推入数组:
data1.forEach((item, i) => {
AsyncStorage.getItem(item.label).then((value) => {
if(value!=null)
{
arrayOfAll.push({label:item.label,data:JSON.parse(value)})
}
})
});
其中 data1 是标签数组:
const data1=[ {label: "Homepage"},
{label: "Politik"},
{label: "Lokal"},
]
我认为问题出在内部数组的大小过大。
我用小阵列试过了,效果很好,比如:
const someArray=[
{label: "A", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "B", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "C", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
];
我正在尝试存储一个对象数组,其中每个对象都有一个字符串标签和相应的数组类型数据,例如:
arrayOfCategory=[
{label: "A", data: Array(36)}
{label: "B", data: Array(20)}
{label: "C", data: Array(20)}
.....
];
ScreenShoot of the array:
ScreenShoot of the inner array:
当我尝试像这样存储它时:
AsyncStorage.setItem("arrayOfCategoryStroage", JSON.stringify(arrayOfCategory));
如果我从存储中获取项目,我有一个空数组。
AsyncStorage.getItem('arrayOfCategoryStroage').then((value) => {
console.log(JSON.parse(value))
});
您获取物品的方式可能存在问题,并确保您的 Aysnc 存储没有在某处被清除,否则所有数据都将丢失。
您可以通过
设置项目 AsyncStorage.getItem('arrayOfCategoryStroage',JSON.stringify(data))
然后这样去取,看看有没有错误。
AsyncStorage.getItem('arrayOfCategoryStroage', (err, result) => {
if (result) {
const data= JSON.Parse(result);
}
}).catch(() => {
});
我尝试像这样分别存储每个项目标签:
AsyncStorage.setItem(item.label, JSON.stringify(data));
然后我得到它们中的每一个并推入数组:
data1.forEach((item, i) => {
AsyncStorage.getItem(item.label).then((value) => {
if(value!=null)
{
arrayOfAll.push({label:item.label,data:JSON.parse(value)})
}
})
});
其中 data1 是标签数组:
const data1=[ {label: "Homepage"},
{label: "Politik"},
{label: "Lokal"},
]
我认为问题出在内部数组的大小过大。
我用小阵列试过了,效果很好,比如:
const someArray=[
{label: "A", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "B", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
{label: "C", data: [{id:"1", title:"title1"},{id:"2", title:"title2"}]},
];