0

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

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

无论我尝试什么,我似乎都会遇到 hacksetTimeout或 dispatch-within-dispatch 错误。

异步操作是通过数据源定义的,并且有自己的存储,如此所述。构建这种行为的正确方法是什么?

  1. 输入组件接收用户输入。
  2. 输入组件使用一个动作来更新商店的状态
  3. 目前,存储尝试启动输出组件所需的异步操作
  4. 在这一点上,我的选择似乎是 Dispatch-with-dispatch 错误或涉及setTimeout. 感觉都不对。

我错过了什么?

4

2 回答 2

0

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

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

Action1.updateStore()
AsyncAction2.run()

然后,使用商店监视AsyncAction2操作来更新和通知结果组件。

于 2016-11-04T14:18:12.870 回答
0

如果您确定要在那个时候进行调度并且只是想避免出现“调度内的调度”错误,您可以使用 alt 的 .defer 方法(请参阅:http ://alt.js.org/docs/行动/)。

于 2016-11-11T00:07:23.690 回答