Middleware nằm giữa việc dispatch một action và việc action đến reducer, cho phép bạn chặn (intercept) các action để xử lý side effect (gọi API async, logging) — điều mà reducer không thể làm vì chúng phải giữ tính thuần. Thunk là middleware phổ biến nhất, cho phép logic async.
Middleware nằm ở đâu
dispatch(action) → [ middleware 1 → middleware 2 → ... ] → reducer → store
(có thể kiểm tra, sửa, trì hoãn, hoặc chặn action; làm side effect)
Middleware bọc (wrap) , nên mọi action đi qua nó trước khi đến reducer. Đây là nơi được chỉ định cho các side effect mà reducer cấm.
