Buổi 03 — Lý thuyết: Bản đồ app với Expo Router
Mục tiêu buổi học
- Phân biệt tab navigation và stack navigation
- Hiểu quy tắc “mỗi file là một màn hình” của Expo Router
- Đọc được cấu trúc thư mục
app/của TaskFlow - Biết cách mở màn hình chi tiết và nhận tham số
id - Biết cách hiển thị danh sách dài hiệu quả và chọn thông tin cho dashboard
1. Navigation — bản đồ của app
Tab navigation giúp chuyển giữa các khu vực ngang cấp. Stack navigation mở một màn hình chi tiết rồi quay lại đúng vị trí trước đó.2. Expo Router — mỗi file là một màn hình
Project TaskFlow tạo ở buổi 1 đã dùng Expo Router. Bạn không khai báo danh sách màn hình trong code. Thay vào đó, đường dẫn file trong thư mụcapp/ chính là đường dẫn màn hình.
Project tạo bằng template mặc định của Expo SDK 57 đặt thư mục này ở
src/app/. Một số project khác đặt ở app/ ngay thư mục gốc. Cả hai đều hoạt động giống nhau, bên dưới dùng src/app/.3. Tabs bên trong Stack
Stack gốc chứa nhóm(tabs) và màn hình chi tiết. Nhờ vậy, khi mở chi tiết, màn hình mới đè lên cả thanh tab và có nút quay lại.
src/app/_layout.tsx
name phải khớp tên file:
src/app/(tabs)/_layout.tsx
4. Chuyển màn hình và nhận tham số
Có hai cách mở màn hình chi tiết:id từ đường dẫn bằng useLocalSearchParams:
src/app/task/[id].tsx
5. Bốn tab của TaskFlow
6. Dashboard trả lời điều gì?
Trong vài giây, người dùng cần biết:- Hôm nay cần làm gì?
- Việc nào quá hạn hoặc ưu tiên cao?
- Tiến độ chung đang ở mức nào?
- Ai đang phụ trách từng việc?
7. Danh sách cuộn thông minh
FlatList chỉ dựng các phần tử cần thiết trên màn hình. Bạn cung cấp nguồn dữ liệu và khuôn TaskCard; React Native xử lý phần lặp. Mỗi TaskCard khi bấm sẽ mở /task/[id] tương ứng.
Tóm tắt buổi học
- Expo Router: đường dẫn file trong
app/là đường dẫn màn hình. _layout.tsxquyết định kiểu điều hướng:Stackcho luồng đi sâu,Tabscho khu vực chính.- Nhóm
(tabs)gom file mà không đổi đường dẫn;[id]tạo route động. - Mở màn hình bằng
Linkhoặcrouter.push, đọc tham số bằnguseLocalSearchParams. - Dashboard ưu tiên hành động; danh sách dùng
FlatListvà component tái sử dụng.