WorksheetsReact Native Session 07
Total questions: 20
Worksheet time: 10mins
Câu 1: Khi cập nhật một state là object, cách nào sau đây đảm bảo bạn không làm mất các thuộc tính cũ?
setUser({ name: 'John' });
user.name = 'John';
setUser(user.name = 'John');
setUser(prevState => ({ ...prevState, name: 'John' }))
Câu 2: Hook useState trả về giá trị gì?
Chỉ một biến chứa state
Chỉ một hàm dùng để cập nhật state
Một object chứa state và hàm cập nhật
Một mảng chứa hai phần tử: giá trị state hiện tại và hàm cập nhật state
Câu 3: Trong useEffect, việc cung cấp một mảng phụ thuộc (dependency array) rỗng [] có tác dụng gì?
Khiến effect chạy sau mỗi lần component render lại
Khiến effect không bao giờ chạy
Khiến effect chỉ chạy khi component bị unmount
Khiến effect chỉ chạy một lần duy nhất sau khi component render lần đầu
Câu 4: Chức năng chính của cleanup function được trả về từ useEffect là gì?
Để cập nhật state của component
Để gọi API lấy dữ liệu mới
Để tối ưu hóa tốc độ render của ứng dụng
Để dọn dẹp tài nguyên (như subscription, timer) trước khi component unmount hoặc effect chạy lại
Câu 5: Đâu là cách triển khai cleanup function đúng cho một setInterval trong useEffect?
useEffect(() => { const timerId = setInterval(tick, 1000); return timerId; }, []);
useEffect(() => { const timerId = setInterval(tick, 1000); console.log(timerId) }, []);
useEffect(() => { const timerId = setInterval(tick, 1000); return clearInterval(timerId); }, []);
useEffect(() => { const timerId = setInterval(tick, 1000); return () => clearInterval(timerId); }, []);
Câu 6: useEffect(callback, deps) sẽ thực thi callback khi nào?
Chỉ một lần khi component được tạo
Sau mỗi lần component render lại
Chỉ khi component bị xóa khỏi cây DOM
Sau lần render đầu tiên và mỗi khi một giá trị trong mảng deps thay đổi
Một trong những công dụng phổ biến nhất của useRef là gì?
Để quản lý các logic state phức tạp
Để khiến component phải render lại
Để truyền dữ liệu giữa các component không liên quan
Để truy cập trực tiếp đến một phần tử DOM hoặc lưu trữ một giá trị có thể thay đổi mà không gây render lại
Để truy cập giá trị được lưu trữ trong một ref (tạo bởi useRef), bạn sử dụng cú pháp nào?
myRef()
myRef.value
myRef
myRef.current
Hook useContext giải quyết vấn đề gì trong React?
Tối ưu hiệu năng render của danh sách
Giúp quản lý các tác vụ bất đồng bộ
Giúp xử lý các sự kiện chạm của người dùng
Giúp truy cập dữ liệu từ Context mà không cần thông qua "prop drilling" (truyền props qua nhiều cấp)
useReducer thường được ưu tiên hơn useState trong trường hợp nào?
Khi quản lý một state đơn giản như boolean hoặc chuỗi
Khi bạn chỉ cần lưu trữ một giá trị không thay đổi
Khi bạn muốn truy cập trực tiếp đến phần tử DOM
Khi bạn có logic state phức tạp với nhiều giá trị phụ thuộc lẫn nhau
Hàm dispatch được trả về từ useReducer có nhiệm vụ gì?
Trả về giá trị state hiện tại
Thay đổi trực tiếp object state
Ngăn component render lại
Gửi một "hành động" (action) đến reducer function để kích hoạt việc cập nhật state
Thuộc tính nào của hook useNetInfo nên được sử dụng để kiểm tra một cách đáng tin cậy rằng thiết bị có thực sự truy cập được Internet hay không?
isConnected
type
details.strength
isInternetReachable
Sự khác biệt chính giữa window và screen được trả về từ hook useDimensions là gì?
window luôn có kích thước lớn hơn screen
screen và window luôn có kích thước giống hệt nhau
screen dùng cho iOS, window dùng cho Android
window là không gian khả dụng cho ứng dụng (không tính status bar), trong khi screen là kích thước toàn bộ màn hình vật lý
Prop nào trong FlatList dùng để hiển thị các phần tử của danh sách?
data
keyExtractor
onEndReached
renderItem
Prop keyExtractor trong FlatList có mục đích gì?
Để mã hóa dữ liệu của danh sách
Để xác định phong cách cho mỗi phần tử
Để thêm header cho danh sách
Để cung cấp một key duy nhất cho mỗi phần tử, giúp React tối ưu hóa việc render và quản lý list
Cấu trúc dữ liệu đầu vào cho SectionList phải như thế nào?
Một mảng phẳng chứa các object
Một object lớn chứa tất cả dữ liệu
Một chuỗi JSON
Một mảng các object, mỗi object chứa một key title cho tiêu đề section và một key data là mảng các phần tử của section đó
Đâu là sự khác biệt cơ bản giữa FlatList và SectionList?
FlatList chỉ cuộn được theo chiều dọc, SectionList cuộn được theo cả chiều ngang
FlatList không có header và footer
FlatList hiệu năng tốt hơn SectionList trong mọi trường hợp
FlatList hiển thị một danh sách đơn giản từ mảng phẳng, trong khi SectionList dùng để hiển thị dữ liệu được nhóm theo từng mục (section)
Để tối ưu hóa FlatList cho các danh sách dài, bạn nên đảm bảo cung cấp prop nào?
ListHeaderComponent
numColumns
horizontal
keyExtractor
Để tạo context cho useContext sử dụng, bạn dùng hàm nào của React?
React.useContext()
React.newContext()
React.Provider()
React.createContext()
Khi nào một component sử dụng useContext(MyContext) sẽ re-render?
Khi component cha của nó re-render
Sau mỗi 5 giây
Chỉ khi component đó được mount lần đầu
Khi giá trị của MyContext.Provider thay đổi
