🛠️ Dự án: ứng dụng quản lý nhỏ với Vite

By Better Wise

Ở bài trước bạn đã biết cách gọi fetch trong useEffect, giữ ba trạng thái loading, error, data và cleanup request bằng AbortController. Giờ ta ghép tất cả lại: một ứng dụng nhỏ nhưng đủ để bạn thấy mọi mảnh ghép của module 3 hoạt động cùng nhau.

Bạn đã quen với đoạn HTML tĩnh thế này:

<ul>
  <li><input type="checkbox" checked> Mua sữa</li>
  <li><input type="checkbox"> Nộp báo cáo</li>
</ul>

Vấn đề của HTML thuần: muốn thêm một dòng, bạn phải tự tạo thẻ li và appendChild. Với React, bạn chỉ mô tả "danh sách này trông thế nào khi state là như vậy", phần còn lại React lo.

Ứng dụng cần làm được gì

Tên dự án: Sổ việc cần làm. Yêu cầu tối thiểu:

  • Tải 5 việc ban đầu từ https://jsonplaceholder.typicode.com/todos?_limit=5
  • Hiện Đang tải... trong lúc chờ, hiện thông báo lỗi nếu request thất bại
  • Có form thêm việc mới, ô nhập là controlled input
  • Tick checkbox để đánh dấu đã xong
  • Hiện lời nhắc khi danh sách rỗng

Note: Dữ liệu API trả về có tên trường khác với item ta muốn dùng (title, completed). Hãy map lại ngay sau khi res.json() để phần còn lại của app chỉ làm việc với một hình dạng dữ liệu duy nhất: { id, title, done }.

Bài tập nhỏ: viết component ItemRow nhận props item và onToggle, hiển thị checkbox cộng tiêu đề.

Bản đồ component và nơi đặt state

flowchart TD
  App["🧠 App<br/>items, loading, error"]
  App --> Form["📝 ItemForm<br/>title"]
  App --> List["📋 ItemList<br/>props: items"]
  App --> Status["⏳ Loading hoặc Error"]
  List --> Row["✅ ItemRow<br/>props: item, onToggle"]

Nguyên tắc: state thuộc về component cha gần nhất cần dùng nó. items cần cho cả ItemList và form (để thêm), nên nó nằm ở App. Còn title của ô nhập chỉ ItemForm dùng, nên để riêng trong ItemForm.

In this lesson

  • Thứ tự làm việc đề xuất
  • Thế nào là xong: tiêu chí nghiệm thu
  • Lỗi người mới hay mắc và mẹo gỡ
  • Ghi nhớ nhanh sau khi làm xong
  • Đã có gì trong tay và bước tiếp theo

About this course

Part of React từ con số 0 cho người chỉ biết HTML — Khóa học dẫn dắt người chỉ biết HTML/CSS đi qua JavaScript cần thiết và các khái niệm cốt lõi của React. Kết thúc khóa, bạn tự xây được một ứng dụng React hoàn chỉnh với form, danh sách và dữ liệu từ API.

Level
Beginner
Goal
Fundamentals
Language
Vietnamese
Focus
JavaScript ES6 đủ dùng cho React Component, JSX và props State và vòng đời với hooks Form, danh sách và gọi API Tư duy khai báo thay vì thao tác DOM
Prior knowledge
HTML cơ bản, CSS cơ bản
Practice
Exercises + capstone project
Time
~5.8h
Voice
một lập trình viên frontend kiên nhẫn, luôn đưa ví dụ đời thường với HTML quen thuộc trước khi chuyển sang code React, và chỉ ra những lỗi người mới hay mắc.
Not covered
Next.js và SSR, Redux và quản lý state phức tạp, TypeScript nâng cao, Testing chuyên sâu, Tối ưu hiệu năng nâng cao

This lesson is premium content. Sign in and purchase the course to view the full content. Sign in