Skip to main content

Tổng hợp thư viện sử dụng trong dự án React theo năm

· 4 min read
Hậu Nguyễn

Công nghệ thay đổi quá nhanh, đôi khi khóa học chưa quay xong mà thư viện nó updates tè le làm nội dung không còn chính xác nữa haha. Mình cũng cố gắng thay đổi theo thời gian, nên viết blog này để note lại những thư viện mình đã dùng cho dự án React theo năm.

Tổng hợp thư viện sử dụng trong dự án React theo năm

Lưu ý

Những thư viện mình liệt kê dưới đây là theo cá nhân của mình đã sử dụng trong dự án theo từng thời kỳ, nó không phải là best options của ngành nhé.

Overview

Chủ đề2020-20212022-2023
Form ManagementReact Hook FormReact Hook Form
Form ValidationYupYup
State ManagementRedux ToolkitReact Query + Zustand
Build toolCreate React AppVite
UI libMaterial UI v4MUI v5+
StyleSCSS + BEMJSX / MUI System

Scroll xuống tí, có thêm chi tiết nè 😊

Form Management + Validation

Trước đây, mình có dùng Redux Form, Formik, kể từ ngày chuyển sang React Hook Form là mình từ bỏ 2 anh kia luôn.

  • Redux Form: quản lý form state sử dụng redux, cơ mà hầu hết các tình huống local state là đủ òi.
  • Formik: mình bị dính performance issue cho một cái form phức tạp, có tới 20-30 controls nên nó lag tung chảo ở development mode, qua prod thì nó đỡ hơn. Cơ mà mình cũng không ưng lắm.
  • React Hook Form: ngon lành, dễ sử dụng, ko bị performance issues, mình dùng tới bây giờ. Đi kèm với việc quản lý form, thì mình có dùng thêm Yup để xử lý cho phần form validation.

Quản lý form là một trong những topic rất quan trọng, nó ảnh hưởng rất lớn tới dự án của mình. Setup đúng sẽ mang lại hiệu quả và không sợ khi làm với form, ngược lại sẽ là ác mộng mỗi lần đụng tới form.

State Management

Một chủ đề quan trọng không kém là quản lý state, việc chọn lựa nơi lưu trữ state, thay đổi state không hợp lý có thể làm cho app của mình có nhiều bugs và khó mà xử lý triệt để.

Mỗi thư viện quản lý state có một cách code khác nhau nên nếu mình cần thay đổi sau này sẽ dẫn tới code changes khá nhiều và phức tạp. Nên việc lựa chọn một thư viện quản lý state + giải pháp hợp lý là cần thiết ngay từ đầu.

  • Trước đây thì mình dùng Redux Toolkit cho việc quản lý state.
  • Hiện tại mình đang dùng combo react-queryzustand, đơn giản và tiện lợi hơn theo trải nghiệm cá nhân của mình. Các dự án của mình cũng dẫn chuyển sang hướng tiếp cận này.
#Phân loại stateThư việnMô tả
1Client State ➡️ Local StateReact.useState()dữ liệu dùng cho một component hiện tại hoặc component con (<= 3 tầng)
2Client State ➡️ Global Statezustanddữ liệu cần chia sẻ cho nhiều components ở nhiều nơi khác nhau
3Server Statereact-querydữ liệu trả về từ APIs
Nguyên tắc đơn giản
  1. Với server state --> dùng react-query
  2. Với client state --> dùng local state cho đến khi cần global state

Cảm ơn bạn đã dành thời gian xem blog của mình 🎉



Easy Frontend - Code xịn hơn mỗi ngày