2017-07-30 132 views
0

如果从UI触发某个操作removeItem(itemId),则应首先从该状态中删除相应的项目,然后调用相关的传奇。如果传奇失败,它应该将状态重置为原始状态。使用还原传奇实现还原

我想知道是否可以将信息附加到减速器内的动作有效载荷,然后从具有相同有效载荷的传奇中触发failed动作。这是假设减速器将始终被首先发射(是这样吗?)

回答

1

你不应该从你的减速器内派遣。减员工的工作是采取当前状态,采取行动,并从减少两者中恢复新状态。而已。你想做些什么可以像下面这样的策略来完成:

  1. 使用itemId才能到项目的引用,并存储在本地。
  2. 根据ID从商店中删除商品的调度操作。
  3. 呼叫相关的传奇。
  4. 如果失败,请将本地存储的步骤1中的项目添加回商店。如果成功,删除对第1步中的项目的引用。
+0

@ankit_m是的,这是我将如何处理这种情况。 –

+0

但我在哪里保留删除的数据?假设两个项目被背对背地删除。在传奇失败的情况下,如何存储已删除的数据以便恢复? –

+0

@ankit_m在您从商店中删除数据之前,您将获得数据,以便您可以将其存储在本地以外的商店中,因此您需要重新添加它。您可以将每个已删除的项目推送到数组中,并在传奇成功时将其从阵列中移除,或者派遣操作重新将它们添加到存储中,因为sagas失败。无论哪种方式,在传奇成功或失败后,您将删除与该itemId关联的本地数据。 –