Middleware zit tussen het dispatchen van een action en het bereiken van de reducer, zodat je actions kunt onderscheppen om side effects af te handelen (async API-aanroepen, logging) — wat reducers niet kunnen doen omdat ze puur moeten blijven. Thunks zijn de meest voorkomende middleware, waarmee async logica mogelijk is.
Waar middleware past
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
