为什么React Native文档建议您在AsyncStorage之上使用抽象?

时间:2016-06-01 08:24:18

标签: react-native

React Native文档(https://facebook.github.io/react-native/docs/asyncstorage.html)说:

  

建议您在AsyncStorage之上使用抽象而不是AsyncStorage直接用于除了轻量级用途以外的任何操作,因为它全局运行。

我不明白为什么它建议我写一个抽象只是因为它在全球范围内运作。

仅将它用于轻松的事情是有道理的,但为什么全球经营是一件坏事呢?

1 个答案:

答案 0 :(得分:14)

AsyncStorage项视为全局变量,因此每次添加内容或阅读某些内容时,您都会访问全局变量。这对于像API基本URL这样的东西可能有意义,但对于大多数其他东西,它会开始变得混乱。

想象一下,您需要存储有关用户的信息,您可以合理地从他们的名字开始,因此您将name添加到Async。后来你意识到你想要他们的DOB,然后他们想要他们的pets等等。如果你在全局创建它们,你也将使用诸如name之类的变量名来访问它们 - 这在全局范围内开始失去意义。此外,你必须写:

AsyncStorage.getItem('name', (err, result) => {
  this.setState({
      name: result
  })
})

整个项目 - 将来如果变量名name发生变化,您必须在所有文件中更新它。

相反你最好编写一个User类,它将提供实例变量(或某些类似的),然后可以将自己序列化为异步。此外,如果项目后来由API支持,或者需要更强大的数据库样式存储系统,则可以轻松更换存储机制。