Reactjs 反应/流量:1个事件同步更新多个存储

Reactjs 反应/流量:1个事件同步更新多个存储,reactjs,flux,reactjs-flux,Reactjs,Flux,Reactjs Flux,反应0.14.0,香草通量模式 问题: 如果触发的事件需要更新位于两个单独存储区中的两个数据结构,该怎么办? 这是一个非常基本的痛苦,我觉得与通量 你逻辑上分解了你的存储,然后有一天你发现自己创建了一个事件,但不幸的是,它需要同时更新两个不同存储中的两个独立数据结构 为什么这让我在开发过程中感到困惑: 如果这个逻辑是错误的,请纠正我 就我对通量的理解而言,在前一个动作所导致的重新渲染完成之前,我们不应该发送动作。因此,更新一个存储(或多个存储)的多个同步操作是不可能的 我的解决方案: Crunc

反应0.14.0,香草通量模式

问题: 如果触发的事件需要更新位于两个单独存储区中的两个数据结构,该怎么办?

这是一个非常基本的痛苦,我觉得与通量

你逻辑上分解了你的存储,然后有一天你发现自己创建了一个事件,但不幸的是,它需要同时更新两个不同存储中的两个独立数据结构

为什么这让我在开发过程中感到困惑:

如果这个逻辑是错误的,请纠正我

就我对通量的理解而言,在前一个动作所导致的重新渲染完成之前,我们不应该发送动作。因此,更新一个存储(或多个存储)的多个同步操作是不可能的

我的解决方案:

Crunch商店在一起- 我可以将需要更新的数据移动到同一个存储中,以便只执行一个操作。(这听起来好像使存储过于复杂)

移动状态服务器端- 我可以跟踪服务器端的一些状态,然后我可以使用异步操作调用,首先更新服务器,然后服务器将更新推回到存储中。(听起来既没有效率又慢)


我是一名专门的React开发人员,愿意接受任何建议和/或更正,以帮助我理解如何构建出色的React应用程序。Thx

这就是我想要的。该链接显示了一些独立但相互依赖的存储的示例。此外,如果您只需要分别更新这两个存储,也可以,一个操作可以导致两个存储都更新。但是,如果两个存储需要一起更新(例如,其中一个存储需要了解另一个存储的内部信息),则您需要
waitFor
。请注意,如果两个存储都触发设置状态(通过发出EventEmitter事件来响应某个操作),如果操作的源不是React组件事件,然后,您将得到两个渲染-其中一个渲染将a)无用,并且可能b)由于仅更新了1个存储之后存储状态不一致而失败。ReactDOM.unstable_batchedUpdates是解决方案。@Micheletilley我以为
waitFor
是在让另一个操作(很可能是依赖的)执行之前强制一个操作完成。我担心的是启动2个同步存储更新操作,而第二个操作试图在第一个操作的重新呈现完成之前发出更改。我原以为这就是我在通量方面无休止的“调度不变”问题背后的全部原因。@NickPineda如果这两个动作是背靠背/同时调度的,那就不是问题了。如果其中一个动作分派是由另一个动作分派引起的,则这是级联分派,不允许。但是
调度(action1);派遣(行动2)很好。这就是。该链接显示了一些独立但相互依赖的存储的示例。此外,如果您只需要分别更新这两个存储,也可以,一个操作可以导致两个存储都更新。但是,如果两个存储需要一起更新(例如,其中一个存储需要了解另一个存储的内部信息),则您需要
waitFor
。请注意,如果两个存储都触发设置状态(通过发出EventEmitter事件来响应某个操作),如果操作的源不是React组件事件,然后,您将得到两个渲染-其中一个渲染将a)无用,并且可能b)由于仅更新了1个存储之后存储状态不一致而失败。ReactDOM.unstable_batchedUpdates是解决方案。@Micheletilley我以为
waitFor
是在让另一个操作(很可能是依赖的)执行之前强制一个操作完成。我担心的是启动2个同步存储更新操作,而第二个操作试图在第一个操作的重新呈现完成之前发出更改。我原以为这就是我在通量方面无休止的“调度不变”问题背后的全部原因。@NickPineda如果这两个动作是背靠背/同时调度的,那就不是问题了。如果其中一个动作分派是由另一个动作分派引起的,则这是级联分派,不允许。但是
调度(action1);派遣(行动2)很好。