react-native - 使用 mobx 或 redux 还是使用存储库模式和持久本地存储领域或 sqlite?

标签 react-native flutter redux repository mobx

微博 还原 通常不会持续 任何数据。他们将维持 临时 应用程序运行时的全局状态。
我知道有redux-persistmobx-persist两个社区内的软件包。但不幸的是这些persisting解决方案似乎一点也不好。他们只有 stringifyserialize一个全局状态树并使用某种键值存储来持久化它。对?
问题:
当这样的应用程序再次打开时,stringified store 将被解析并结构化回其原始数据结构(例如 JSON),然后完全加载到 RAM 内存中。 我对吗?
如果是,这是一个问题。总是在内存中加载完整的“数据库”也就是“全局状态”是不好的。与在 SQLite 上查询表相比,在我的全局状态下过滤长数组中的数据可能永远不会更快,对吧?
我一直在寻找一些repository - 为 redux 或 mobx 持久化全局状态的解决方案。我正在寻找一些解决方案,用于在一些知名的移动数据库(如 SQLite 或其他数据库)上持久化和查询数据。
任何答案将不胜感激。

最佳答案

我不太确定您需要什么,但如果我理解正确,您需要保留大量数据并加载相同的数据,但仅限于 批处理 .
我相信这类问题可以通过 repository pattern 来解决。和 SOLID 设计原则。
你会需要:

  • 存储业务逻辑的存储类(mobx 存储)。
  • 负责检索和持久化数据的存储库类。

  • 存储通过构造函数将存储库注入(inject)其中。
    然后当您调用initialize方法,它与存储库对话并检索初始数据。现在,初始数据只能是所有持久化数据的子集。您可以在存储和存储库上实现某种分页,以根据需要批量检索数据。稍后您可以根据需要调用其他方法来加载和保存其他数据。
    伪代码:
    class Repository(){
      initialize()// load the first batch
      load(next 10 models)
      save(data)
    }
    
    class Store{
       constructor(repository)
       initialize(){
          repository.initialize()
       }
       load(){
          repository.load()
       }
       
       save(){
          repository.save()
       }
    }
    
    
    现在您的应用程序数据不应该是一个巨大的对象,而应该由多个存储区组成,每个存储区负责一部分数据。例如,您将有一个存储和存储库用于处理待办事项,另一对用于处理地址簿联系人等。
    附录:
    存储库是 的原因注入(inject)进入商店,这样您就可以轻松地将其交换为其他一些实现(商店不关心数据是如何持久化和检索的),而且单元测试非常容易。
    你也可以有一个根存储来保存所有其他存储,所以本质上你在一个地方拥有完整的状态。因此,如果您调用 serializeroot store,它将所有存储序列化并返回一个大对象。

    关于react-native - 使用 mobx 或 redux 还是使用存储库模式和持久本地存储领域或 sqlite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66897271/

    相关文章:

    push-notification - react native : Call a function from tapping a Push Notification?

    flutter - 'error while retrieving information from server [DF - AA - 33] 是什么意思,我该如何解决这个错误?谷歌游戏商店?

    android - React-Native 使用 expo sdk 播放视频

    ios - 如何避免将 REVERSED_CLIENT_ID 硬编码到 iOS Info.plist 中以进行开发/生产 Google 登录?

    android - Flutter 应用程序从服务器接收 json 文件

    javascript - 如何仅在 props 更新后运行 onSubmit={}?

    reactjs - 如何导出mapStateToProps和Redux Form?

    reactjs - 使用 redux useDispatch 时 useEffect 缺少依赖项

    javascript - 为什么在 react native 中自动调用 setInterval

    react-native-git-upgrade 错误 : Cannot find module 'AccessibilityInfo'