Middleware se situe entre la dispatch d'une action et l'arrivée de l'action au reducer, vous permettant d'intercepter les actions pour gérer les side effects (appels API asynchrones, logging) — ce que les reducers ne peuvent pas faire car ils doivent rester purs. Thunks sont le middleware le plus courant, permettant la logique asynchrone.
Où le middleware s'insère
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
