React / Alt - 在响应用户输入时避免在调度内调度?

时间:2016-10-31 01:30:58

标签: javascript reactjs alt.js

我有一个用户输入的组件。当他们保存时,我使用操作来更新商店的状态

为了响应这些新信息,结果组件需要运行异步操作,然后在新信息返回时做出响应。

无论我尝试什么,我似乎都留下了一个hack setTimeout或一个dispatch-within-dispatch错误。

异步操作是通过数据源定义的,并且按照概述here拥有自己的存储。构造这种行为的正确方法是什么?

  1. 输入组件接收用户输入。
  2. 输入组件使用操作来更新商店的状态
  3. 目前,商店尝试启动输出组件
  4. 所需的异步操作
  5. 此时我的选择似乎是Dispatch-with-dispatch错误或涉及setTimeout的黑客解决方案。感觉不对。
  6. 我错过了什么?

2 个答案:

答案 0 :(得分:0)

忽略有关DataSources的示例。不要在商店中使用registerAsync

相反,使用操作来执行异步行为并使结果更新存储。在您给出的示例中,请从输入组件执行此操作:

Action1.updateStore()
AsyncAction2.run()

然后,使用商店观看AsyncAction2操作来更新并通知结果组件。

答案 1 :(得分:0)

如果您确定要在此时进行调度,并且只是想避免在调度中发送"发送"您可以使用alt' s .defer方法出错(请参阅:http://alt.js.org/docs/actions/)。