FlatList là list ảo hóa (chỉ render item quanh viewport). Với list lớn, tối ưu:
Cấu hình props:
- getItemLayout: nếu item cao cố định → bỏ đo đạc, cuộn nhanh và mượt hơn.
- initialNumToRender, maxToRenderPerBatch, windowSize: cân bằng giữa vùng trắng (blank) khi cuộn nhanh và bộ nhớ/độ mượt.
- removeClippedSubviews: tháo view ngoài viewport.
- keyExtractor ổn định để tái dùng đúng.
Item component:
- Bọc bằng React.memo, giữ item nhẹ và ít logic.
- Dùng useCallback cho renderItem (tránh hàm ẩn danh tạo mới mỗi render).
- Ảnh dùng bản cache/tối ưu.
Hay hỏi: vì sao dùng FlatList thay vì .map() trong ScrollView (ScrollView render tất cả một lúc → tốn bộ nhớ).