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

Hél*_*rdt 13 react-native

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

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

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

将它用于轻物品是有道理的,但为什么全球经营都是坏事呢?

Tom*_*ers 16

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

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

AsyncStorage.getItem('name', (err, result) => {
  this.setState({
      name: result
  })
})
Run Code Online (Sandbox Code Playgroud)

整个项目 - 将来如果变量名称name发生变化,您将不得不在所有文件中更新它.

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