Fluxxor - 如何发送动作以响应另一个?

时间:2015-11-02 16:45:54

标签: reactjs flux reactjs-flux

我觉得这个问题的副标题是“Fluxxor是否希望我的应用程序正常工作?”。毫无疑问,我还没有掌握如何与Fluxxor合作......

错误是:

在调度另一个操作('​​FIRST_AJAX_REQUEST_IS_RETURNED')时无法调度操作('NEXT_AJAX_REQUEST_IS_ABOUT_TO_BE_MADE')

组件A是组件B的所有者

组件A在其componentWillReceiveProps中调用操作创建者。此动作创建者发出AJAX请求。如果成功,我们将FIRST_AJAX_REQUEST_IS_RETURNED与一些数据一起发送到商店。商店更新。它会发生变化。组件A正在侦听此更改。组件A更新其状态。组件A重新呈现将此状态作为props传递给组件B.组件B中的组件B调用操作创建者根据其现有数据发出第二个AJAX请求。在发出实际的AJAX请求之前,动作创建者调度NEXT_AJAX_REQUEST_IS_ABOUT_TO_BE_MADE - 以便将商店置于特定状态。

我得到关于调度一个动作而另一个动作正在进行中的消息,因为Fluxxor没有考虑第一个动作完成 - 即使在AJAX请求完成并且我有数据之前我不能做第二个动作。问题似乎是调用子组件的componentWillReceiveProps方法中的第二个操作,以响应第一个操作引起的所有者组件状态的变化。

因此。我尝试将第二个动作移动到第一个商店中成功的'回调'。我仍然得到同样的信息。即使这是正确的事情......

第二个操作取决于第一个操作中包含的数据。我无法将这两者合并为一个请求/操作,然后使用waitFor。

更新2个商店

1 个答案:

答案 0 :(得分:0)

http://fluxxor.com/guides/react.html#batched-updates

这解决了它。

然而,我不明白为什么,如果有人有这个原因,我会非常感谢。

我认为结果是,在getStateFromFlux引起的状态更改完全完成之前,组件A不会重新呈现。因此,当组件B调用其动作创建者时,我们现在完全完成了第一个操作。

这大致正确吗?