2017-07-30 113 views
0

如果從UI觸發某個操作removeItem(itemId),則應首先從該狀態中刪除相應的項目,然後調用相關的傳奇。如果傳奇失敗,它應該將狀態重置爲原始狀態。使用還原傳奇實現還原

我想知道是否可以將信息附加到減速器內的動作有效載荷,然後從具有相同有效載荷的傳奇中觸發failed動作。這是假設減速器將始終被首先發射(是這樣嗎?)

回答

1

你不應該從你的減速器內派遣。減員工的工作是採取當前狀態,採取行動,並從減少兩者中恢復新狀態。而已。你想做些什麼可以像下面這樣的策略來完成:

  1. 使用itemId才能到項目的引用,並存儲在本地。
  2. 根據ID從商店中刪除商品的調度操作。
  3. 呼叫相關的傳奇。
  4. 如果失敗,請將本地存儲的步驟1中的項目添加回商店。如果成功,刪除對第1步中的項目的引用。
+0

@ankit_m是的,這是我將如何處理這種情況。 –

+0

但我在哪裏保留刪除的數據?假設兩個項目被背對背地刪除。在傳奇失敗的情況下,如何存儲已刪除的數據以便恢復? –

+0

@ankit_m在您從商店中刪除數據之前,您將獲得數據,以便您可以將其存儲在本地以外的商店中,因此您需要重新添加它。您可以將每個已刪除的項目推送到數組中,並在傳奇成功時將其從陣列中移除,或者派遣操作重新將它們添加到存儲中,因爲sagas失敗。無論哪種方式,在傳奇成功或失敗後,您將刪除與該itemId關聯的本地數據。 –