因此,我们计划将PHP后端与React + Redux前端服务器一起使用。我们正在开发一个非常大的应用程序,整个应用程序中都有很多表。由于它将是单页应用程序,因此所有数据都包含在存储对象中。
所以,让我们看看我是否有正确的心态。登录该应用后,我的状态几乎开始为空。当我访问页面时,我的状态将开始充满。示例:我访问了应用程序的“照片”,然后最终从数据库中加载了一些照片并将其放入商店中:
state{ ... photos: [1: {...}, 3: {...}, 17:{...}] ... }
然后,如果我需要id = 17的照片,则不需要再次请求,可以在商店中使用它,对吗?或者,也许我先从商店取走它,并要求它异步检查它是否有变化。
当我访问越来越多的页面时,我将拥有一个巨大的store对象,其中包含来自不同表的许多元素,例如。照片,视频,用户配置,朋友等。如何处理数据一致性?如果我需要10分钟前已经取回的物品,是否应该再次提出要求?拥有如此庞大的存储对象是否“健康”?
我打算使用normalizr&重新选择来操纵我的日期在react-redux中。
有什么想法吗?我想听听您如何看待这种情况的好方法。
提前致谢!
法比奥
是的,标准化的Redux存储是标准建议。有关更多信息,请参见Redux常见问题解答:组织嵌套状态,构造化变径- 规范化状态形状,以及React / Redux链接列表中的Selectors and Normalization部分。
至于缓存数据,从概念上讲,这应该与任何其他客户端设置没有什么不同。无论您使用的是Redux,Angular,Ember,Backbone还是其他资源,存储大量数据都将占用相似的内存量。由您决定要缓存多少,以及何时以及如何清理缓存的数据。
最后,为了处理Redux存储中的关系/规范化数据,我建议使用一个名为Redux- ORM的库。通常,绝对应该使用Reselect,Normalizr可以很好地标准化接收到的数据,但是Redux- ORM提供了一个有用的抽象层,用于将标准化后的数据存储在商店中后进行查询和更新。我写了几篇博客文章描述了它的用法:Redux- ORM基础知识和Redux- ORM概念与技术。