Redux dựa trên ba nguyên tắc:
1. Single source of truth — toàn bộ state nằm trong một store duy nhất. Nhờ vậy data đồng bộ giữa các component, và serialize rồi restore lại rất dễ (lưu state xuống localStorage rồi hydrate khi reload).
2. State is read-only — không mutate state trực tiếp, mọi thay đổi phải đi qua dispatch một action. Chính điều này tạo ra audit trail rõ ràng và là nền cho time-travel của Redux DevTools.
3. Changes are made with pure functions — reducer phải là pure function: cùng input luôn ra cùng output, không side effect.
Lưu ý: vi phạm nguyên tắc
- hay gặp nhất là gọi API hay
Date.now()ngay trong reducer — side effect thuộc về middleware (thunk/saga). Người mới cũng hay vi phạm nguyên tắc - bằng
state.items.push(item); cú pháp đó chỉ hợp lệ trong Redux Toolkit nhờ Immer, còn Redux thuần thì đó là mutate thật
Redux Toolkit sinh ra để dẹp boilerplate của cả ba nguyên tắc này, thông qua createSlice, createAsyncThunk và RTK Query.