Câu hỏi: FER202 Phát triển web Front-End với React – Bộ ôn tập cuối kỳ số 4
50 câu trắc nghiệm kèm lời giải của môn FER202 - Phát triển web Front-End với React, xếp đúng thứ tự trong đề. Trang 3/3 — câu 41–50.
Danh sách câu hỏi
Đáp án đúng: "By using the shorthand syntax <>...</> or <React.Fragment>...</React.Fragment> ". Một component chỉ được trả về một phần tử gốc, nên khi cần trả về nhiều phần tử anh em ta bọc chúng bằng Fragment; Fragment gom nhóm trong JSX nhưng không sinh thêm nút nào trong DOM. Cú pháp rút gọn là cặp thẻ rỗng, còn dạng đầy đủ React.Fragment cần dùng khi phải gắn key, chẳng hạn trong vòng map. "By wrapping the JSX elements with <div> tags" sai vì bọc bằng div cũng thoả yêu cầu một gốc nhưng thêm một nút DOM thừa, có thể phá bố cục như bảng hay flex, và đó chính là điều Fragment sinh ra để tránh. "By creating a separate component for each element" sai vì tách component không giải quyết việc gom nhiều phần tử về một gốc. "By using the fragment() function" sai vì React không có hàm fragment nào như vậy; Fragment là một component dùng dưới dạng thẻ.
Đáp án đúng: "const Dashboard = React.lazy(() => import('./Dashboard')); ". React.lazy nhận một HÀM không tham số trả về Promise, mà import() động chính là Promise resolve ra module có export default là component; React chỉ gọi hàm này khi Dashboard render lần đầu, và cần bọc Dashboard trong Suspense để có giao diện chờ. "const Dashboard = lazy('./Dashboard');" truyền thẳng chuỗi đường dẫn thay cho hàm, lazy không biết tải gì và báo lỗi khi render. "const Dashboard = React.lazy(import('./Dashboard')); " gọi import() ngay lúc khai báo rồi truyền Promise thay cho hàm, mất tính lười và React cũng báo lỗi vì đối số không phải hàm. "const Dashboard = lazy(() => require('./Dashboard'));" sai vì require nạp module đồng bộ và trả về chính module chứ không phải Promise như lazy cần; require là cú pháp CommonJS nên cũng không tạo chunk tách riêng như import().