2017-07-30 8 views
0

アクションremoveItem(itemId)がUIから起動された場合は、最初に対応するアイテムを状態から削除してから関連するサガを呼び出す必要があります。サガが失敗した場合は、状態を元の状態にリセットする必要があります。redux-sagaで取り消しを実装する

リデューサー内のアクションペイロードに情報を追加して、同じペイロードを持つサガからfailedアクションを発動できるかどうかは疑問でした。これは、減速機が常に最初に発射されることを前提としています(それは本当ですか?)

答えて

1

あなたは減速機の中から派遣しないでください。減速家の仕事は、現在の状態、行動、そして2つの減少から新しい状態を返すことです。それでおしまい。あなたがしようとしていることは、以下のような戦略によって達成することができます:

  1. itemIdを使用してアイテムへの参照を取得し、ローカルに保管してください。
  2. idに基づいてストアからアイテムを削除するためのディスパッチアクション。
  3. コール関連サガ。
  4. 失敗した場合は、手順1のローカルに格納された項目をストアに追加して戻します。成功した場合は、手順1の項目への参照を削除してください。
+0

@ankit_mはい、これは私がこの状況を処理する方法です。 –

+0

しかし、削除したデータはどこに保存しますか? 2つのアイテムが連続して削除されているとします。削除されたデータをどこに格納して保存して、サガが失敗した場合に復元しますか? –

+0

@ankit_mデータをストアから削除する前に、データを取得して、ストアの外にローカルに保存できるようにする必要があります。削除された各アイテムを配列にプッシュして、サガが成功すると配列から削除したり、アクションをディスパッチしてサガールが失敗したときにストアに再追加することができます。いずれにしても、サガが成功または失敗した後、そのitemIdに関連付けられたローカルデータが削除されます。 –

関連する問題