我想用AsyncStorage存储项目列表。该列表将随着时间的推移而更新。
以下是列表可以处于的状态示例:
[
{
name: "Alice",
email: "alice@example.com"
},
{
name: "Bob",
email: "bob@example.com",
address: "30 Madison Ave., NY"
}
]
现在,似乎存在两个存储此列表的选项:
这两种方法都有优势 - React Native最喜欢什么?
答案 0 :(得分:7)
我认为这取决于您计划如何使用,访问和更新数据。您可以使用几种异步存储方法来帮助使这两种情况更容易。
如果您决定使用多个键路线,请查看multiSet和multiGet,这样您就可以在单个函数调用中检索多个键。 getAllKeys将为您节省“保持跟踪所创建的所有键”的麻烦,解决了Fredrick Motte提到的两个问题。
要在一次通话中更新多个按键,请查看multiMerge,这是一种非常强大的方法,类似于mergeItem,但同时有多个按键。
所以,你看到你真的可以去任何一条路线。如果您将数据分成多个键,那么您可能只想花一些时间熟悉我上面提到的方法。
大卫建议让Relm看一眼也可能对你有一些价值,再次......取决于你的需要。
答案 1 :(得分:3)
为了便于使用,我将整个列表存储起来;从那时起,您不必单独跟踪为每个联系人创建的所有密钥;加载/保存它们会更容易(只需一个函数调用而不是遍历所有联系人)。
但这主要是个人偏好;对于这两种方法中的任何一种都没有实际限制。
答案 2 :(得分:2)
我想补充克里斯和弗雷德里克的两个好答案: 这取决于列表的大小和文档的大小。
作为一个整体使用一个列表更容易管理,但不会扩展(计算将随着全局值的大小而变得更重)。 每个项目使用一个密钥会增加一些复杂性,但会扩展。
就个人而言,我开始使用一个键中的所有内容,现在我正在重构每个键有一个文档,因为当我处理数百个大文档时,性能明显降低。
如果你正在处理数千或数万个元素,我认为你应该找一个像sqlite或realm这样的合适数据库(但目前调试是一个问题)。
有兴趣知道asyncStorage的真正限制,我读到某个地方,它只有几兆字节,除非你在你的原生配置中要求增加它