•3 min read

React Thực Chiến: Hiểu Đúng Hooks, State Management và Next.js App Router

React Thực Chiến: Hiểu Đúng Hooks, State Management và Next.js App Router

React không khó — nhưng lại rất dễ hiểu sai. Bài viết này sẽ đi từ những thắc mắc thực tế đến câu trả lời cặn kẽ, tập trung vào chữ tại sao chứ không chỉ là cách làm.

Audio Briefing
0:00 / 0:00

React là gì?

React là một thư viện JavaScript dùng để xây dựng giao diện người dùng theo mô hình component.

Mô hình Component

Hãy tưởng tượng component như những mảnh ghép LEGO. Bạn tạo ra các mảnh nhỏ, tái sử dụng được và ghép chúng lại thành một giao diện hoàn chỉnh!

function ChaoMung({ ten }) {
  return <h1>Xin chào, {ten}!</h1>;
}

Advertisement

Quản lý State với useState

useState lưu trữ dữ liệu ngay trong RAM của trình duyệt.

So sánh địa chỉ ô nhớ

React so sánh state dựa trên địa chỉ ô nhớ. Sửa trực tiếp object sẽ không làm thay đổi địa chỉ của nó, nên React sẽ không re-render! Luôn nhớ copy object/array.

Cách làm sai

Gọi setDem(dem + 1) nhiều lần liên tiếp sẽ dùng lại giá trị cũ (stale snapshot).

setDem(dem + 1); // ❌

Cách làm đúng

Sử dụng dạng callback để đảm bảo bạn luôn lấy được giá trị mới nhất!

setDem(prev => prev + 1); // ✅

Xử lý Side Effects với useEffect

Side effects là những việc như gọi API hay đặt timer.

Hàm Cleanup (Dọn dẹp)

Đoạn return () => ... KHÔNG phải là code chạy tuần tự. Bạn đang "gửi gắm" một hàm cho React để nó chạy sau này (khi dependencies thay đổi hoặc khi unmount).

useEffect(() => {
  const timer = setTimeout(() => console.log('Ping!'), 1000);
  return () => clearTimeout(timer); // 🧹 Cleanup
}, []);

Tránh Prop Drilling với useContext

Chán nản vì phải truyền props qua 5 tầng component? Context chính là cứu tinh của bạn.

Cẩn thận với Re-render!

Mọi component dùng context đều bị re-render khi bất kỳ giá trị nào trong đó thay đổi. Với global state phức tạp, hãy cân nhắc sử dụng Zustand!


Advertisement

Next.js App Router: Cách tiếp cận hiện đại

Next.js thay đổi luật chơi: mặc định, mọi thứ đều là Server Component.

Server Components

Chạy trên server. Tuyệt vời cho SEO và fetch data ban đầu. Không dùng được useState hay useEffect.

Client Components

Thêm "use client" ở đầu file. Dùng khi cần tương tác, lắng nghe sự kiện, và sử dụng hooks.

Sơ đồ quyết định nhanh
  • State giao diện nội bộ? useState
  • State toàn ứng dụng? Zustand
  • Fetch data & caching? TanStack Query
  • SEO & data tĩnh? Next.js Server Components
Share this article:

Stay Updated

Get the latest posts delivered straight to your inbox.

Free Developer Utilities

Free In-Browser Developer Tools

Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.

Explore Tools
Advertisement