【问题标题】:Using Realm in React Native app with Redux在带有 Redux 的 React Native 应用程序中使用 Realm
【发布时间】:2017-03-03 04:45:02
【问题描述】:

我即将进行 React Native 应用程序的开发,并且完全相信使用 Redux 管理应用程序状态的好处,但是我想通过使用 Realm 进行持久存储来使应用程序的数据在离线时可用。我想知道 Redux 将如何与 Realm 一起玩?

我正在开发的应用程序将通过 RESTful API 提取大量 JSON 数据,然后我想将这些数据保存到本地存储 - 领域似乎是一个很好的选择。然而,我不确定 Realm 数据库将如何存在于 Redux 存储中?它必须存在于商店之外吗?在基于 Redux 的应用程序中使用 Realm 是否有点矛盾?

我已经很好地搜索了描述 Realm 或其他存储选项(Asyncstorage 或 SQLite)用于 Redux 的大型数据集的文章,但几乎找不到信息。

【问题讨论】:

  • 为什么不定义实际对领域数据库进行异步调用以加载/保存正确数据的 LOAD/SAVE 操作。有点像将领域数据库视为另一种服务,因为您不能一次加载大量数据。
  • 请问,“大”有多大?
  • 嘿,我遇到了类似的问题:我从 Firebase 实时数据库中提取数据并将其显示到适用于 iOS 和 android 的本机应用程序中。我的数据库很大(它包含更多 14400 行),即使没有互联网连接,我也必须显示所有这些数据。所以,我正在考虑制作一个 JSON 文件,只要没有连接,我就可以在数据上读写,但是,然后我找到了 Realm。那么你认为它符合我的需求吗?我也在我的应用程序中使用 Redux,它会在我的应用程序中产生矛盾吗?谢谢
  • This redux-persist issue 讨论了这个特定主题。我认为这不会发生

标签: sqlite react-native redux realm asyncstorage


【解决方案1】:

当您只有处理数据的反应组件时,redux 存储很好。存储是维护应用程序状态的好方法。例如,您不需要 Realm 存储当前登录状态或指示用户是否跳过登录的标志。 redux 商店在这里赢得了比赛。

另一方面,当您必须处理复杂的查询或要存储的大量数据时,Realm 是最好的选择。拥有 Realm 的优点是可以轻松地在您的反应组件以及非反应组件/类中访问数据。 Realm 为您提供了使用 Realm 浏览器监控数据并在模型之间建立关系的优势。如果您必须进行任何离线同步,Realm 也会赢得比赛。

它是否必须存在于商店外部 -

在基于 Redux 的应用程序中使用 Realm 有点矛盾 - 这取决于您使用存储的目的。

【讨论】:

  • 感谢您的出色回复 :-) 自从写了这个问题以来,我对 redux 是什么以及如何使用它有了更好的理解,我完全同意您的上述陈述。我仍然不完全确定是否需要使用 Realm 或者 Redux 存储是否足够。我怀疑后者是我的用例。再次感谢。
  • 我们正在做出类似的决定 - 您是否做出了最终决定,如果是,您对这个选择感到满意吗?我们已经在一定程度上实现了 Realm——但发现它会给我们的项目增加很多开销,并正在考虑将其删除。我只是想知道对于许多移动应用来说,离线有多重要——尤其是我们的应用是电子商务,而不是人们期望离线做的事情。
  • 我是clockit.io的联合创始人。在clockit,我们将用户的地理位置存储在后台,作为离线位置跟踪的一部分。 Redux 与 Realm 完全取决于您的应用程序的要求。如果您使用 ecom,除非您有非常具体的离线存储要求,否则使用领域会产生开销。
  • 在我的拙见中,Redux 和 Realm 不应该相互排斥。这只是整理应用程序的不同层的问题。 React 和 Redux 主要在表示层上,而 Redux 存储(即使它被命名为存储)不是也不应该是任何类型的持久性设备。 Redux 存储只是为 UI 组件存储不同的变量以相应地运行。另一方面,Realm 解决了持久层的问题。应该使用 React 和 Redux 获取数据并显示它们,并根据自己的业务逻辑使用 Realm 将它们离线缓存。
  • 那么 Realm 本身是否提供了 Redux 的一些好处?也就是说,它是否提供了自己的方式来在数据发生变化时自动更新 UI 组件?
猜你喜欢
  • 2022-12-16
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2016-10-02
  • 2018-08-10
  • 2017-08-16
相关资源
最近更新 更多