React Native AsyncStorage保存多个项目

3

使用AsyncStorage是否可以保存多个具有相同键的项目? 我有一个ListView,其中包含多个可以添加到收藏夹中的项目。当用户按下“添加到收藏夹”按钮时,它会执行以下代码:

AsyncStorage.setItem("key", JSON.stringify(item.CodViatura));

但是如果我想添加另一个项目,它将替换之前的项目。如何使用相同的键添加多个项目?因此,我可以在收藏夹屏幕上调用此代码:

AsyncStorage.getItem('key').then((cod)=>{
  this.setState({value: JSON.parse(cod)}
  });
})

我知道我可以使用Realm进行数据管理,但是我发现它比AsyncStorage更难使用。

1个回答

3

存储项目的数组

AsyncStorage
  .getItem('key')
  .then(favs => {
      favs = favs == null ? [] : JSON.parse(favs)

      favs.push(item.CodViatura)

      return AsyncStorage.setItem('key', JSON.stringify(favs))
  })

那是设置项目的代码吗?它不起作用,没有存储任何项目。 - waze
@waze 嗯,应该可以。尝试添加 catch 来查看是否出现错误。还可以尝试添加 .then(() => AsyncStorage.getItem('key')).then(x => console.log(x)) 来检查它是否实际存储了某些内容。 - Yury Tarabanko
我遇到了这个错误:可能未处理的 Promise 拒绝(id: 0):favs.push 不是一个函数 - waze
1
你的存储中已经有了一个不是数组的东西。请先将其删除。或者在推送之前添加 favs = Array.isArray(favs) ? favs : [favs] - Yury Tarabanko
除了现在items可能包含多个值的数组之外,没有什么特别的需要获取项AsyncStorage.getItem('key').then(JSON.parse).then(items => /*use items*/) - Yury Tarabanko
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接