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

React Context API đơn giản hóa: Là gì, tại sao & cách tôi dùng trong dự án thực tế

0 0 5

Người đăng: Gung Typical

Theo Viblo Asia

Giả sử bạn đang làm việc trên một dự án lớn và phải truyền props qua nhiều lớp component. Và mỗi lần cần cập nhật một prop, bạn lại phải lặp lại quy trình mệt mỏi đó ở từng component trung gian. Thật bực mình, phải không?

Sẽ tuyệt vời biết bao nếu bạn có thể lưu tất cả các biến useState và các hàm tiện ích vào một nơi tập trung, và truy cập chúng ở bất kỳ đâu trong ứng dụng chỉ với một dòng mã?

Đó chính xác là lúc React Context API phát huy tác dụng. Nó loại bỏ rắc rối khi truyền props xuống nhiều lớp và cho phép bạn quản lý cũng như chia sẻ state cùng logic một cách hiệu quả hơn trong toàn ứng dụng. image.png

React Context API là gì?

Nếu bạn từng phải truyền props qua ba (hoặc nhiều hơn) component chỉ để đến được một component con nằm sâu, thì Context API chính là công cụ "giải cứu" bạn.

React Context API cung cấp một cách để chia sẻ giá trị giữa các component mà không cần truyền props thủ công ở mỗi cấp. Nó phù hợp để quản lý state toàn cục như:

  • Xác thực người dùng
  • Chủ đề ứng dụng (dark/light mode)
  • Cài đặt ngôn ngữ
  • Cấu hình Firebase hoặc API

image.png

Khi nào (và tại sao) nên dùng?

Hãy dùng Context API khi bạn cần chia sẻ state giữa nhiều component, đặc biệt là khi chúng được lồng sâu. Nó lý tưởng cho các mối quan tâm toàn cục và không thay đổi thường xuyên.

🔹 Các tình huống thực tế:

  • Quản lý trạng thái đăng nhập người dùng
  • Bật/tắt dark mode
  • Cấu hình Firebase hoặc API
  • Hiển thị toast hoặc thông báo
  • Quản lý nhiều trạng thái liên quan theo kiểu module

⚠️ Không nên dùng Context cho dữ liệu thay đổi thường xuyên như input trong form — có thể gây vấn đề về hiệu năng. Với các trường hợp như vậy, hãy cân nhắc dùng các thư viện như Zustand, Redux, hoặc Recoil.

Thiết lập Context cơ bản (từng bước)

Cùng đi qua ví dụ thiết lập UserContext để quản lý xác thực:

Bước 1: Tạo thư mục contexts trong thư mục src

→ Giúp bạn tổ chức dự án gọn gàng hơn.

Bước 2: Tạo UserProvider.jsx

import { createContext, useState } from "react"; const UserContext = createContext(null); const UserProvider = ({ children }) => { const [loggedIn, setLoggedIn] = useState(false); const [userCredentials, setUserCredentials] = useState({}); const createUser = () => { /* Firebase signup logic */ }; const getUserDetails = () => { /* Fetch user data */ }; const updateUserDetails = () => { /* Update user */ }; const deleteUser = () => { /* Delete user */ }; return ( <UserContext.Provider value={{ loggedIn, createUser, getUserDetails, updateUserDetails, deleteUser, userCredentials, setUserCredentials }}> {children} </UserContext.Provider> );
}; export { UserContext, UserProvider };

Bước 3: Sử dụng Context trong Component

import React, { useContext } from "react";
import { UserContext } from "../../contexts/UserProvider"; const Profile = () => { const { getUserDetails, updateUserDetails, userCredentials, setUserCredentials } = useContext(UserContext); return ( <div> {/* Use the functions and state */} </div> );
}; export default Profile;

Tôi dùng Context trong dự án thực tế (với Firebase) như thế nào?

Trong một dự án thực tế có tên ClassMantra — trợ lý giảng dạy sử dụng AI, tôi dùng Context API để tích hợp logic Firebase.

Đây là những gì tôi dùng Context để quản lý:

  • Xác thực và đăng ký người dùng
  • Thao tác với Firestore: thêm, đọc và xóa bài tập
  • Tổ chức tất cả logic và state liên quan đến Firebase vào một nơi — dễ tái sử dụng

Nhờ đó, tôi tránh việc prop drilling và có thể truy cập Firebase ở bất kỳ đâu chỉ bằng một import.

Các lỗi thường gặp & thực tiễn tốt

  • Gói toàn bộ App bằng Provider
import { UserProvider } from "./contexts/UserProvider"; function App() { return ( <UserProvider> <FirebaseProvider> {/* Your application */} </FirebaseProvider> </UserProvider> );
}
  • Quá nhiều context lồng nhau → Hãy kết hợp hoặc compose lại thành một provider tổng.
  • Dùng Context cho dữ liệu thay đổi nhanh → Tránh vì có thể gây lag. Hãy dùng local state hoặc state management khác như Zustand.

Kết luận

React Context API là một công cụ mạnh mẽ nếu bạn sử dụng đúng cách. Nó giúp đơn giản hóa việc quản lý state toàn cục như xác thực người dùng, chủ đề ứng dụng, logic chia sẻ — đặc biệt hữu ích khi dự án của bạn phát triển.

Bình luận

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

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

Tìm hiểu về Redux Thunk

Chào mọi người, nếu bạn là người đã biết về React và đang làm quen với Redux chắc hẳn bạn đang rất mơ hồ về các khái niệm cơ bản của Redux như dispatch, store, action creator,... bạn còn đang vật lộn với đống document của Redux để hiểu những khái niệm đó và bạn nghe ai đó trong team nói về Redux Thu

0 0 412

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

[React] Giới thiệu tổng quát về Redux Toolkit

1. Redux Toolkit (RTK) là gì và tại sao lại có nó. . .

0 0 6.7k

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

Uống Pepsi code Vue đi - Uống Cocacola code React nha ;)

. (Nguồn ảnh: Internet). Chào các bạn, chào các bạn. Let's go . 1.

0 0 158

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

Cài đặt taillwind css cho dự án React

Trong bài viết cùng mình tìm hiểu cách cài đặt tailwind css cho một dự án React sẵn có. .

0 0 157

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

Formik vs React Hook Form (Phần 1)

Các lập trình viên Front End đều làm việc rất nhiều với form cùng sự phức tạp của ứng dụng. Do vậy chúng ta cần những thư viện form mạnh mẽ hỗ trợ quản lý các form state, form validation... Thành phần module. Formik bao gồm có 9 dependencies khác. . React Hook Form thì không có.

0 0 382

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

Hướng dẫn React Redux cho người mới bắt đầu - Phần 1

Lời mởi đầu. Chào các bạn, ở thời điểm thực hiện bài viết này mình cũng là một người đang bắt đầu tìm hiểu và học với ReactJs và Redux, trong quá trình tìm hiểu đọc các tài liệu về thư viện này mình có tìm được một bài hướng dẫn khá hay nên đã quyết định chia sẻ với mọi người .

0 0 293