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

React/Alt - avoid dispatching within a dispatch when responding to user input?

本文关键字:调度 输入 用户 Alt 响应 React      更新时间:2023-09-26

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

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

无论我怎么尝试,我似乎都留下了一个hack setTimeout或调度中的调度错误。

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

  1. 用户输入被输入组件接收。
  2. 输入组件使用一个动作来更新一个商店的状态
  3. 当前,存储试图启动输出组件所需的异步操作
  4. 在这一点上,我的选择似乎是调度与调度错误或涉及setTimeout的黑客解决方案。感觉都不对。

我错过了什么?

忽略有关数据源的示例。禁止在商店使用registerAsync

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

Action1.updateStore()
AsyncAction2.run()

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

如果你确定你想在那个点调度,只是想避免得到"调度中的调度"错误,你可以使用alt的.defer方法(参见:http://alt.js.org/docs/actions/)。