如何在 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"}]},
    ];