Middleware znajduje się między dispatchowaniem akcji a jej dotarciem do reducera, umożliwiając przechwycenie akcji w celu obsługi efektów ubocznych (asynchroniczne wywołania API, logowanie) — czego reducery nie mogą zrobić, ponieważ muszą pozostać czyste. Thunki są najpopularniejszym middleware, umożliwiającym logikę asynchroniczną.
Gdzie middleware się znajduje
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
