redux-sagaについて

📅 September 01, 2021

⏱️2 min read

reduxのapplyMiddleware

  • dispatch関数をラップし、actionがreducerに到達する前にMiddlewareがキャッチできるようにするもの。
  • Middlewareの処理をチェーンのように連続でつないでいくことが可能。
  • Middlewareを使ってStoreを拡張することで、ロギング機能や非同期処理機能などを追加できる。

middlewareイメージ

redux-sagaって何?

redux-saga は React/Redux アプリケーションにおける副作用(データ通信などの非同期処理、ブラウザキャッシュへのアクセスのようなピュアではない処理)をより簡単で優れたものにするためのライブラリです。 https://github.com/redux-saga/redux-saga/blob/master/README_ja.md

ジェネレーター関数で作成されているMiddlewareの一種で、「タスク」という概念をRedux内に持ち込み、Reduxにおける非同期処理でありがちな「どこに書く?」や「どうやって書く?」に対してレールを引いてくれるもの。

Effect

ジェネレーター関数で使われる yield を用いて、以下のEffectを使える。

https://redux-saga.js.org/docs/api/#effect-creators

よく使うやつは以下。

  • takeEvery ・・・Actionを監視して、タスクを実行する。
  • call ・・・タスクを同期的に実行する。
  • fork ・・・タスクを非同期的に実行する。
  • put ・・・Actionをディスパッチする。(Store更新など)
  • select ・・・Storeの値を取得
  • all ・・・複数のタスクを並列で実行し、全て終わるまで待つ
  • join ・・・forkしたタスクが完了するのを待つ。複数指定可能。

イメージ

参考ページ