Middleware duduk di antara dispatch sebuah action dan action mencapai reducer, memungkinkan Anda mengintersepsi actions untuk menangani side effects (async API calls, logging) — yang tidak bisa dilakukan reducers karena harus tetap pure. Thunks adalah middleware paling umum, mengaktifkan logika async.
Letak middleware
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(can inspect, modify, delay, or stop actions; do side effects)
