Gọi API với fetch: loading, error và cleanup
Bài trước bạn đã nắm useEffect dùng để chạy side effect sau khi render, và mảng phụ thuộc quyết định effect chạy lại khi nào. Bài này lấy đúng thứ đó để làm việc mà app React nào cũng phải làm: lấy dữ liệu từ server rồi hiển thị.
Bạn sẽ làm được gì sau bài này
- Viết
useEffectgọifetchvà đưa kết quả vào state. - Hiển thị rõ ba khoảnh khắc: đang tải, lỗi, có dữ liệu.
- Hủy request bằng
AbortControllerkhi component unmount.
Ba khoảnh khắc của một lần gọi API
Ví dụ đời thường: bạn gọi món ở quán. Có ba khoảnh khắc: đang chờ món, quán báo hết món, món được bưng ra. Giao diện cũng vậy. Nếu thiếu khoảnh khắc "đang chờ", người dùng sẽ nhìn màn hình trắng và tưởng app treo.
flowchart TD
Start["🟢<br/>Component mount"] --> Loading["⏳<br/>loading = true"]
Loading --> Check{"res.ok ?"}
Check -->|"true"| Success["✅<br/>setTodos(data)"]
Check -->|"false"| Fail["❌<br/>setError(message)"]
Success --> Done["🛑<br/>loading = false"]
Fail --> Done
Important:
fetchchỉ reject khi có lỗi mạng (mất wifi, sai domain). Server trả 404 hay 500 thìfetchvẫn coi là xong, nên bạn phải tự kiểm trares.ok.
Ví dụ mẫu: tải danh sách việc cần làm
Ta đi từng bước trên component TodoList của dự án quản lý nhỏ.
- Khai báo ba state:
todos(dữ liệu),loading(mặc địnhtrue),error(mặc địnhnull). - Trong
useEffect, tạoAbortControllerđể có thể hủy request. - Gọi
fetch, kiểm trares.ok, rồires.json()để đổi response thành object. - Render theo ba nhánh: loading trước, error sau, cuối cùng là danh sách.
In this lesson
- Cleanup: hủy request khi component unmount
- Lỗi hay gặp khi gọi fetch trong useEffect
- Tự kiểm tra nhanh
- Chốt lại trước khi vào dự án
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