Redux:使用前端应用程序状态树同步后端数据库

时间:2016-07-19 09:11:26

标签: redux

根据我的经验,随着应用程序变得越来越复杂,保持后端数据库和前端状态树同步变得非常简单。

例如,当您在博客中创建新的Post时,您必须在数据库中创建一个对象,并在状态树中附加post对象(例如,在posts reducer中) )。如果状态树是嵌套的,则会变得更复杂。如果您更新属于帖子的评论,则必须在状态树中找到正确的帖子,并找到正确的评论并进行更新。

我理解为什么拥有应用状态树是有益的,但这种同步会给我带来太多的开销,让我真正欣赏Redux。

问。有没有办法更轻松地进行同步?

2 个答案:

答案 0 :(得分:1)

Meteor专门用于解决您提及的问题。

Redux仅用于管理客户端上的状态。更确切地说,它的工作是保持ui本身所需的状态。

它经常与React一起使用,它可以作为一个智能的地方来存放任何东西以及渲染ui所需的一切。这通常包括复杂的状态,可能包含大量的应用数据。然后它可能开始看起来更像数据库,但数据库具有Redux缺少的许多属性。想到了坚持......

Meteor是一个框架而Redux不是。因此,Meteor带来了大量的支持,Meteor决定如何处理应用中的大量问题。另一方面,Redux非常宽容。它不会决定你的状态是什么样的,或者你如何与你的后端交谈,或者你如何渲染你的ui。

因此,因为Redux允许您自由决定如何处理这些问题,所以它也让您有责任这样做。 Redux非常小,你应该只期待岩石固态管理,仅此而已。

您移动到客户端的全局应用程序状态有多少取决于您,以及如何将其连接到后端,如果此后端运行node.js + Mongo或php + mysql或lisp +文本文件,则完全取决于你。使用Meteor时也不能这样说。

强大的力量带来了巨大的责任。

答案 1 :(得分:0)

我有同样的问题,我确信对此有一个经过验证的正确答案。但是,我头脑风暴了两个可能的解决方案:

1)将帖子“手动”添加到应用状态,然后在下次请求GET时,协调状态和响应(您的策略)。如果您的客户端状态为normalized

,这会容易得多

2)在POST状态为200后立即执行GET,并使用活动指示符处理延迟。

我接受的答案,不是一个基本的解释。