当前位置: 首页 > 面试题库 >

在React + Redux SPA SaaS中处理大型商店中的数据一致性

司空镜
2023-03-14
问题内容

因此,我们计划将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概念与技术。



 类似资料:
  • 我使用axios从API获取数据,然后使用节点中的数据。js应用程序。数据是由300个对象组成的数组,如下所示: 获取此对象数组后,我需要转换每个对象:用新的键替换其键,并将一些值转换为适当的数据类型(字符串到浮点): 现在我只使用For循环,并在每次迭代中转换每个对象的键和值。但是像这样的物体将会有成千上万。它将是处理这些数据的工人。在节点中处理它们的最佳方式是什么。js? 我将使用一些现成的队

  • 我正在做我的第一个react项目,我有一个问题。 使用,在react中处理和存储数据的最佳方法是什么? 我当前的工作流程: 在 将数据存储在(例如在中作为子对象` 使用控件的属性中的数据,如

  • 我正在使用一个Flink流式Java应用程序,输入源为Kafka。在我的应用程序中总共使用了4个流。一个是主数据流,另一个3个用于广播流。 我加入了使用任何一种类型的三个广播流。我已经作为流B广播,并且能够在广播过程函数上下文状态(即在processBroadcastElement())中接收。 我的问题是, > 是否可以在广播状态下存储大数据? 注意:根据我的理解,Flink广播状态在运行时保存

  • 好吧,我对使用Scala/Spark还比较陌生,我想知道是否有一种设计模式可以在流媒体应用程序中使用大量数据帧(几个100k)? 在我的示例中,我有一个SparkStreaming应用程序,其消息负载类似于: 因此,当用户id为123的消息传入时,我需要使用特定于相关用户的SparkSQL拉入一些外部数据,并将其本地缓存,然后执行一些额外的计算,然后将新数据持久保存到数据库中。然后对流外传入的每条

  • <---JS StackTrace---> =====JS栈迹=================================================================== 安全上下文:0x10178C2CFB51 2:main[/run-N6KBYU8CQZCNEXKH0TBM/solution.JS:~30][PC=0x2859725AEC0](this=0x10178

  • 问题内容: 我用来并行化一些繁重的计算。 目标函数返回大量数据(庞大的列表)。我的RAM用完了。 如果不使用,我只需将生成的元素依次计算出来,就将目标函数更改为生成器。 我了解多处理不支持生成器- 它等待整个输出并立即返回,对吗?没有屈服。有没有一种方法可以使工作人员在数据可用时立即产生数据,而无需在RAM中构造整个结果数组? 简单的例子: 这是Python 2.7。 问题答案: 这听起来像是队列