非同期なフロー
ミドルウェアがなければ、同期的なデータフローだけに対応します。これはcreateStore()
を、特に設定せず使った場合です。
applyMiddleware()
により、createStore()
の性能を高めることができます。絶対に必要というわけではありませんが、簡潔なやり方で非同期なActionを表現できます。
redux-thunkやredux-promiseなどの非同期なミドルウェアは、Storeのdispatch()
メソッドをラップ(内包)します。Action以外のもの、例えば関数やPromiseをDispatch(送信)できるようにするのです。どんなミドルウェアも、Dispatchされたものを解釈・実行します。そして順番に、チェーン内にある次のミドルウェアへActionを渡します。例えば、PromiseのミドルウェアはPromiseを途中でつかまえます。そして、それぞれのPromiseに応じて開始/終了というActionのペアを、非同期にDispatchします。
チェーン内にある最後のミドルウェアがActionをDispatchするさい、そのActionは普通のObjectである必要があります。このときに、同期的なReduxデータフローが行われます。
非同期を用いた例の、ソースコード完全版を確認してください。
次のステップ
ここまで、Reduxのミドルウェアができることの一例を見てきました。次は実際にミドルウェアがどう機能し、そして自分で作るにはどうすれば良いかを学びましょう。詳しくミドルウェアを学べるセクションへ進みましょう。