【问题标题】:Why the React Native docs recommends that you use an abstraction on top of AsyncStorage?为什么 React Native 文档建议您在 AsyncStorage 之上使用抽象?
【发布时间】:2016-06-01 08:24:18
【问题描述】:

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

建议您在 AsyncStorage 之上使用抽象,而不是直接使用 AsyncStorage,因为它在全球范围内运行。

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

只将它用于轻量级的事情是有意义的,但为什么在全球范围内运营是一件坏事?

【问题讨论】:

    标签: react-native


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2014-07-03
      • 2016-04-09
      相关资源
      最近更新 更多