React 19 có gì mới
React 19 tập trung chuẩn hóa luồng mutation với Actions + hooks cho form/optimistic, cải thiện quản lý head/tài nguyên để tối ưu hiệu năng.
1. useActionState
👉 Quản lý async action (submit/mutation) và tự động có:
state (kết quả trả về)
pending (đang submit hay không)
Không cần tự viết useState + try/catch + loading.
Điều “magic” của React 19 ✨
-
Không cần
onSubmit -
Không cần
preventDefault -
Không cần
useState(loading) -
React tự quản lý async flow + pending
Ví dụ:
2.useEffectEvent
useEffectEvent (React 19) dùng để tạo event handler luôn đọc được state/props mới nhất nhưng không làm thay đổi dependency của useEffect → giải quyết triệt để bài toán stale closure.
Ví dụ:
Cách 1: dùng useRef để luôn đọc giá trị mới
Cách 2 (React 19): useEffectEvent
Nếu bạn muốn mình giải thích theo “cơ chế render → tạo function mới → closure capture giá trị” bằng một flow ngắn 4 bước để dễ nhớ khi phỏng vấn, mình viết luôn.
3. useDebugValue
Là hook dùng để hiển thị thông tin debug cho custom hook trong React DevTools, giúp bạn hiểu trạng thái bên trong hook khi inspect component.
-
Chỉ dùng trong custom hook
-
Chỉ ảnh hưởng DevTools, không ảnh hưởng UI
-
Giúp debug:
-
loading / error
-
trạng thái kết nối
-
auth status
-
cache state…
4️⃣ Ví dụ thực tế hay gặp (auth hook)
Trong DevTools:
4. useOptimistic
❌ Không optimistic
-
User click → chờ → UI mới đổi
👉 UX chậm, cảm giác lag
2️⃣ useOptimistic hoạt động thế nào?
-
optimisticState: state để render UI -
updateOptimistic: áp dụng thay đổi tạm thời -
Khi action xong → React tự revert / sync
3️⃣ Ví dụ đơn giản nhất (Todo list)
4️⃣ Ví dụ chuẩn React 19: kết hợp với useActionState
5️⃣ Khi nào nên dùng useOptimistic?
-
Like / Unlike
-
Add comment
-
Toggle follow
-
Chat message
-
Form submit cần phản hồi nhanh
6️⃣ Khi KHÔNG nên dùng?
-
Action có thể fail cao
-
Logic rollback phức tạp
-
Dữ liệu phải chính xác tuyệt đối (banking, payment)
7️⃣ So sánh nhanh
| Hook | Mục đích |
|---|---|
| useState | Cập nhật sau khi có data |
| useTransition | Ưu tiên update |
| useActionState | Quản lý async action |
| useOptimistic | UI lạc quan trước server |