我有一个离线 React Web 应用程序,其中所有数据都本地存储在 indexedDB 中。除了静态资产的文件托管之外,没有其他服务器。我已经到了现在开始考虑使用 redux 的地步,但我试图了解将更多数据移动到存储和继续依赖数据库之间的权衡。将本地数据库与 redux 一起使用的惯用方式是什么?
目前我的应用程序由几个容器组件组成,每个容器组件都从componentWillMount
. 集成 redux 的一种选择是保持基本相同,唯一的区别是状态保存在存储中,数据是使用操作和 thunk 获取的。
或者,我看到很多示例代码在启动时将所有数据加载到存储中。这使得整个应用程序更具确定性,更易于测试和重现。主要组件之间的切换会立即发生(以初始应用程序加载为代价)。但是我失去了数据库提供的好处,比如索引和漂亮的查询。
从字面上看,将整个数据库加载到存储中似乎是不合理的,至少在我的情况下,这将是大约 10MB 的数据,也许更多。所以我总是至少有一些组件需要在挂载时继续获取它们的数据。但是有一个数据子集是应用程序的核心,可以说应该完整地加载表(这可能是大约 5,000 到 10,000 个对象)。
使用本地存储和 redux 的惯用方式是什么?componentWillMount
我觉得如果可以避免异步获取,则它不是惯用的。即使在状态小到可以完全加载到存储中的情况下,是否值得放弃良好高效的查询接口的好处?
编辑:我应该提一下:我正在使用Dexie,这是一个非常非常棒的用于处理 indexedDB 的库。它速度快,有一个很好的查询界面,处理迁移等......我真的很想继续使用 Dexie,除非有非常充分的理由不这样做。
作为参考,这里是Dexie 的 github 上关于这个主题的讨论。一般的外卖形式是“视情况而定”。不是我一直在寻找的答案,所以如果可能的话,我希望能获得更多的见解。