- vừa được xem lúc

Toàn Tập Về Các Loại State Trong React

0 0 1

Người đăng: Thanh Hung

Theo Viblo Asia

Trong React, state là một khái niệm quan trọng giúp bạn theo dõi và quản lý dữ liệu thay đổi theo thời gian trong ứng dụng. Tuy nhiên, không phải tất cả state đều giống nhau. Tuỳ vào phạm vi sử dụng và nguồn dữ liệu, state trong React có thể được phân thành nhiều loại khác nhau.

Bài viết này sẽ giới thiệu 5 loại state phổ biến trong React, cùng với ví dụ và cách áp dụng trong thực tế.

1. Local State (State cục bộ)

Local state là loại state được khai báo và sử dụng trong phạm vi của một component cụ thể. Đây là loại state phổ biến nhất và thường được tạo bằng hook useState.

Dùng để:

  • Theo dõi input trong form
  • Kiểm soát trạng thái hiển thị của modal, dropdown
  • Quản lý counter, toggle...

Ví dụ:

import { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <button onClick={() => setCount(count + 1)}> Đã bấm {count} lần </button> );
}

2. Global State (State toàn cục)

Khi bạn cần chia sẻ dữ liệu giữa nhiều component không cùng cấp, bạn cần Global state. Đây là loại state nằm ngoài component cụ thể, thường được quản lý bằng Context API hoặc các thư viện như Redux, Zustand, Recoil...

Dùng để:

  • Quản lý người dùng đăng nhập
  • Cài đặt giao diện (theme, ngôn ngữ)
  • Giỏ hàng trong e-commerce...

Ví dụ (dùng Context API):

const ThemeContext = React.createContext(); function App() { return ( <ThemeContext.Provider value="dark"> <Navbar /> </ThemeContext.Provider> );
} function Navbar() { const theme = React.useContext(ThemeContext); return <div className={theme}>Thanh điều hướng</div>;
}

3. Derived State (State dẫn xuất)

Derived state không phải là state lưu trữ trực tiếp mà được tính toán dựa trên props hoặc các state khác. Bạn không nên lưu nó vào useState nếu không thực sự cần, mà nên tính toán trong quá trình render hoặc dùng useMemo.

Dùng để:

  • Tạo dữ liệu hiển thị từ state khác
  • Lọc, sắp xếp dữ liệu đầu vào

Ví dụ:

function Greeting({ user }) { const fullName = `\${user.firstName} \${user.lastName}`; return <p>Xin chào, {fullName}</p>;
}

4. Server State (State từ server)

Đây là loại state đến từ phía server, thường thông qua API. Nó có thể thay đổi ngoài tầm kiểm soát của ứng dụng, nên cần được xử lý đặc biệt. Thay vì useEffect + fetch, bạn nên dùng thư viện như React Query, SWR để dễ quản lý cache, loading, error.

Dùng để:

  • Tải danh sách sản phẩm, bài viết
  • Quản lý dữ liệu bất đồng bộ

Ví dụ (React Query):

import { useQuery } from '@tanstack/react-query'; function ProductList() { const { data, isLoading } = useQuery(['products'], fetchProducts); if (isLoading) return <p>Đang tải...</p>; return <ul>{data.map(p => <li key={p.id}>{p.name}</li>)}</ul>;
}

5. URL State (State trong URL)

URL cũng có thể chứa thông tin phản ánh trạng thái hiện tại của ứng dụng, như filter, tab đang chọn, trang hiện tại... Dữ liệu này gọi là URL state.

Dùng để:

  • Phân trang, tìm kiếm
  • Cho phép chia sẻ URL giữ nguyên trạng thái giao diện

Ví dụ (React Router v6+):

import { useSearchParams } from 'react-router-dom'; function SearchPage() { const [searchParams, setSearchParams] = useSearchParams(); const keyword = searchParams.get('q'); return <p>Từ khoá tìm kiếm: {keyword}</p>;
}

🔚 Tổng Kết

Loại State Phạm vi Dùng khi...
Local State Trong 1 component Dữ liệu đơn giản, độc lập
Global State Toàn ứng dụng Dữ liệu dùng chung nhiều nơi
Derived State Từ state/props khác Tính toán từ dữ liệu đã có
Server State Từ API Dữ liệu từ backend
URL State Từ URL Lọc, phân trang, chia sẻ trạng thái

Việc hiểu rõ và chọn đúng loại state giúp bạn viết ứng dụng React sạch, hiệu quả và dễ mở rộng. Nếu bạn mới bắt đầu, hãy tập trung vào localserver state trước, sau đó tìm hiểu thêm global state và các kỹ thuật nâng cao hơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Những điều cần lưu ý và sử dụng Hook trong React (Phần 5)

V. Sử dụng useRef như thế nào cho đúng.

0 0 147

- vừa được xem lúc

7 Cách viết code React "clean" hơn

Mở đầu. Là nhà phát triển React, tất cả chúng ta đều muốn viết code sạch hơn, đơn giản hơn và dễ đọc hơn. 1. Sử dụng JSX shorthands.

0 0 204

- vừa được xem lúc

Create app covid-19 use Reactjs

Chào các bạn hôm nay mình sẽ chia sẻ với các bạn một app covid-19, để mọi người cùng tham khảo, tính năng của App này chỉ đơn giản là show số liệu về dịch Covid của các nước trên thế giới như: Số ngườ

0 0 59

- vừa được xem lúc

ReactJS Custom Hooks

ReactJS cung cấp rất nhiều cho bạn các hook mà bạn có thể sử dụng hằng ngày vào project của mình. Nhưng bên cạnh đó bạn có thể tự tạo ra các hook của riêng bạn để sử dụng, làm cho việc tối ưu hóa code

0 0 84

- vừa được xem lúc

3 cách để tránh re-render khi dùng React context

3 cách để tránh re-render khi dùng React context. Nếu đã từng sử dụng React context cho dự án của bạn, và gặp phải tình trạng các component con - Consumer re-render rất nhiều lần, thậm chí bị sai logi

0 0 43

- vừa được xem lúc

Tìm hiểu về React Hook: Sử dụng useDebugValue

Trong bài viết hôm này, tôi sẽ giới thiệu các bạn một React Hook tiếp theo, đó là useDebugValue. useDebugValue là gì .

0 0 61