根据我的经验,随着应用程序变得越来越复杂,保持后端数据库和前端状态树同步变得非常简单。
例如,当您在博客中创建新的Post
时,您必须在数据库中创建一个对象,并在状态树中附加post
对象(例如,在posts reducer中) )。如果状态树是嵌套的,则会变得更复杂。如果您更新属于帖子的评论,则必须在状态树中找到正确的帖子,并找到正确的评论并进行更新。
我理解为什么拥有应用状态树是有益的,但这种同步会给我带来太多的开销,让我真正欣赏Redux。
问。有没有办法更轻松地进行同步?
答案 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,并使用活动指示符处理延迟。
我接受的答案,不是一个基本的解释。