【问题标题】:React/Alt - avoid dispatching within a dispatch when responding to user input?React/Alt - 响应用户输入时避免在调度中调度?
【发布时间】:2017-03-13 03:21:04
【问题描述】:

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

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

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

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

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

我错过了什么?

【问题讨论】:

  • @JaromadaX 所以我概述的流程是 100% 你将如何构造用户输入,触发状态变化和使用 react 和 altjs 的进一步异步行为?我有一个流程问题,而不是代码问题。我不需要代码。我需要程序结构的答案。
  • 好的 - 我想我从未将“错误或黑客”视为流程的一部分
  • @JaromandaX 我会为那些没有阅读完整介绍文本的人更新问题。

标签: javascript reactjs alt.js


【解决方案1】:

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

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

Action1.updateStore()
AsyncAction2.run()

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 2017-04-12
      • 2015-08-02
      • 2018-02-06
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2016-12-30
      相关资源
      最近更新 更多