Middleware action को dispatch करने और reducer तक पहुंचने के बीच में बैठा होता है, जो आपको actions को intercept करने देता है ताकि side effects (async API calls, logging) को संभाल सकें — जो reducers नहीं कर सकते क्योंकि वे pure रहने चाहिए। Thunks सबसे आम middleware है, जो async logic को सक्षम करता है।
Middleware कहां फिट होता है
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
