Middleware sitter mellan dispatchningen av en action och actionens väg till reducern, vilket låter dig avlyssna actions för att hantera bieffekter (asynkrona API-anrop, loggning) — något som reducers inte kan göra eftersom de måste förbli rena. Thunks är den vanligaste middleware och möjliggör asynkron logik.
Var middleware passar in
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
