React Native文档(https://facebook.github.io/react-native/docs/asyncstorage.html)说:
建议您在AsyncStorage之上使用抽象而不是AsyncStorage直接用于除了轻量级用途以外的任何操作,因为它全局运行。
我不明白为什么它建议我写一个抽象只是因为它在全球范围内运作。
仅将它用于轻松的事情是有道理的,但为什么全球经营是一件坏事呢?
答案 0 :(得分:14)
将AsyncStorage
项视为全局变量,因此每次添加内容或阅读某些内容时,您都会访问全局变量。这对于像API基本URL这样的东西可能有意义,但对于大多数其他东西,它会开始变得混乱。
想象一下,您需要存储有关用户的信息,您可以合理地从他们的名字开始,因此您将name
添加到Async。后来你意识到你想要他们的DOB
,然后他们想要他们的pets
等等。如果你在全局创建它们,你也将使用诸如name
之类的变量名来访问它们 - 这在全局范围内开始失去意义。此外,你必须写:
AsyncStorage.getItem('name', (err, result) => {
this.setState({
name: result
})
})
整个项目 - 将来如果变量名name
发生变化,您必须在所有文件中更新它。
相反你最好编写一个User
类,它将提供实例变量(或某些类似的),然后可以将自己序列化为异步。此外,如果项目后来由API支持,或者需要更强大的数据库样式存储系统,则可以轻松更换存储机制。