Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.

4.420/20.347 câuCòn 15.927
Aconst value = MyContext.useContext();
Bconst value = useContext(MyContext);
Cconst value = useContextProvider(MyContext);
Dconst value = MyContext.useContextProvider();
Lời giải

Đáp án đúng: "const value = useContext(MyContext);". useContext là hook nhập từ react, nhận đối tượng context đã tạo bằng createContext và trả về giá trị của Provider gần nhất phía trên trong cây; nếu không có Provider nào thì trả về giá trị mặc định truyền cho createContext, và component sẽ render lại khi giá trị đó đổi. "const value = MyContext.useContext(); " sai vì đối tượng context chỉ có các thuộc tính như Provider và Consumer, không có phương thức useContext. "const value = useContextProvider(MyContext);" sai vì React không có hook tên useContextProvider; Provider là component dùng để cung cấp giá trị chứ không phải hook để đọc. "const value = MyContext.useContextProvider(); " sai vì cả phương thức lẫn tên gọi đó đều không tồn tại trên đối tượng context.

Mở trang câu hỏi này →
ATo avoid using state in functional components
BTo share reusable logic between components
CTo handle side-effects like fetching data
DTo directly manipulate DOM elements
Lời giải
Đáp án đúng: "To share reusable logic between components". Custom hook là một hàm có tên bắt đầu bằng use, bên trong gọi các hook khác như useState, useEffect, để đóng gói một đoạn logic có state, ví dụ useFetch, useLocalStorage hay useWindowSize, rồi dùng lại ở nhiều component; mỗi component gọi nó có state riêng, tức là chia sẻ logic chứ không chia sẻ dữ liệu. "To avoid using state in functional components" sai vì custom hook thường chính là nơi chứa state. "To handle side-effects like fetching data" là việc custom hook có thể bọc lại, nhưng chính useEffect mới xử lý side effect; lý do để tạo custom hook là tái sử dụng logic đó. "To directly manipulate DOM elements" sai vì thao tác DOM trực tiếp đi qua useRef và nên hạn chế, không phải mục đích điển hình của custom hook.
Mở trang câu hỏi này →
AuseState is used for managing simple state, while useReducer is used for complex state and state transitions.
BuseState is a built-in Hook, while useReducer is a custom Hook.
CuseState is used for class components, while useReducer is used for functional components.
DuseState is for local component state, while useReducer is for global application state.
Lời giải

Đáp án đúng: "useState is used for managing simple state, while useReducer is used for complex state and state transitions.". useState hợp với state đơn giản và độc lập như một số, một chuỗi hay một cờ bật tắt; useReducer gom mọi cách chuyển trạng thái vào một hàm reducer(state, action), hợp khi state là đối tượng nhiều trường liên quan hoặc giá trị kế tiếp phụ thuộc giá trị trước theo nhiều loại hành động. "useState is a built-in Hook, while useReducer is a custom Hook." sai vì cả hai đều là hook có sẵn của React, import trực tiếp từ gói react. "useState is used for class components, while useReducer is used for functional components." sai vì không hook nào dùng được trong class component; cả hai chỉ dành cho function component. "useState is for local component state, while useReducer is for global application state." nhầm: cả hai đều tạo state cục bộ của component; muốn chia sẻ cho toàn ứng dụng thì phải kết hợp useReducer với Context hoặc dùng Redux.

Mở trang câu hỏi này →
Afunction.
Bclass.
Cconst.
Dcomponent.
Lời giải
Đáp án đúng: "class.". Class component được viết bằng từ khóa class của ES6, kế thừa React.Component (ví dụ class Welcome extends React.Component) và bắt buộc có phương thức render trả về JSX; state nằm ở this.state, cập nhật bằng this.setState, và có các phương thức vòng đời như componentDidMount. Phương án "function." là cách viết function component, loại component dùng hook thay cho class. Phương án "const." chỉ là từ khóa khai báo hằng; nó hay đi với arrow function để tạo function component, không tạo ra class component. Phương án "component." không phải từ khóa của JavaScript; React.Component là lớp cha để kế thừa chứ không có cú pháp khai báo component bằng chữ component.
Mở trang câu hỏi này →
A<Child prop="name" value="John" />
B<Child propName="name" propValue="John" />
C<Child name="John" />
D<Child data="John" />
Lời giải

Đáp án đúng: "<Child name="John" /> ". Props được truyền giống thuộc tính HTML: tên thuộc tính trong JSX chính là tên khoá trong object props mà component con nhận, nên viết name bằng chuỗi John thì bên trong Child đọc được props.name có giá trị John, hoặc phân rã tham số thành name. "<Child prop="name" value="John" /> " sai vì nó tạo hai prop có tên prop và value, con sẽ nhận props.prop là chuỗi name và props.value là John chứ không có prop name nào. "<Child propName="name" propValue="John" /> " sai vì React không có quy ước tách tên và giá trị thành hai thuộc tính như vậy; con chỉ nhận hai prop propName và propValue. "<Child data="John" /> " sai vì giá trị John được gửi dưới tên data, nên trong con phải đọc props.data, còn props.name vẫn là undefined.

Mở trang câu hỏi này →
4406What is a Component in React?4 lựa chọn
AIt is a single UI element.
BIt is a JavaScript function.
CIt is an HTML framework.
DIt is a Python class.
Lời giải
Đáp án đúng: "It is a JavaScript function.". Tài liệu react.dev định nghĩa component là một hàm JavaScript trả về markup (JSX); React gọi hàm đó với props và lấy kết quả để dựng giao diện, component dạng lớp cũng là lớp JavaScript có phương thức render. "It is a single UI element." đúng một phần ở chỗ component là một mảnh giao diện, nhưng chữ single (đơn lẻ) sai: một component có thể trả về cả cây gồm nhiều phần tử, chứa các component khác, thậm chí cả một trang, nên không đồng nhất với một phần tử UI. "It is an HTML framework." sai vì component không phải framework, và React là thư viện JavaScript, JSX chỉ trông giống HTML. "It is a Python class." sai vì React chạy bằng JavaScript, không liên quan tới Python.
Mở trang câu hỏi này →
Aimport { createStore } from 'redux'; const store = createStore({ reducer: { counter: counterReducer } });
Bimport { createStore } from 'redux'; const store = createStore({ counter: counterReducer });
Cimport { configureStore } from '@reduxjs/toolkit'; const store = configureStore({ counter: counterReducer});
Dimport { configureStore } from '@reduxjs/toolkit'; const store = configureStore({ reducer: { counter: counterReducer } });
Lời giải
Đáp án đúng: "import { configureStore } from '@reduxjs/toolkit'; const store = configureStore({ reducer: { counter: counterReducer } });". configureStore của Redux Toolkit nhận MỘT đối tượng tuỳ chọn, trong đó khoá reducer chứa reducer gốc hoặc một đối tượng các slice reducer; ở đây counter là tên nhánh state nên state.counter do counterReducer quản lý, và configureStore còn tự gộp reducer bằng combineReducers, gắn sẵn middleware thunk, bật Redux DevTools. Phương án gọi "configureStore({ counter: counterReducer})" thiếu khoá reducer, nên Redux Toolkit báo lỗi vì reducer là đối số bắt buộc. Phương án dùng "createStore({ reducer: { counter" là hàm cũ của gói redux, nó nhận thẳng một hàm reducer chứ không nhận đối tượng tuỳ chọn, truyền đối tượng vào sẽ ném lỗi vì reducer gốc phải là hàm; hơn nữa createStore nay đã bị đánh dấu không khuyến nghị (deprecated) để chuyển sang Redux Toolkit. Phương án dùng "createStore({ counter: counterReducer })" cũng truyền đối tượng thay cho hàm reducer và không dùng Redux Toolkit như câu hỏi yêu cầu.
Mở trang câu hỏi này →
AUsing fetch or another method to retrieve data from the API
BConverting the response data into JSON format
CRendering the fetched data immediately on page load
DHandling errors that may occur during the data fetching process
Lời giải
Đáp án đúng gồm ba ý: "Using fetch or another method to retrieve data from the API", "Converting the response data into JSON format" và "Handling errors that may occur during the data fetching process". Quy trình lấy dữ liệu cơ bản trong React: gọi fetch hoặc axios, thường trong useEffect hay qua thư viện như React Query; đọc thân phản hồi bằng response.json() để có object JavaScript rồi đưa vào state bằng hàm set; song song phải bắt lỗi bằng catch hoặc try/catch, kiểm response.ok và hiện thông báo khi mạng hỏng hay server trả lỗi. "Rendering the fetched data immediately on page load" không phải bước bắt buộc, thậm chí không làm được: dữ liệu về bất đồng bộ nên lúc trang vừa tải chưa có gì để hiển thị; cách đúng là render trạng thái đang tải trước, khi state có dữ liệu thì component render lại.
Mở trang câu hỏi này →
Aconst dispatch = useDispatch(); dispatch('ACTION_TYPE');
Bconst dispatch = useDispatch(); dispatch(() => { type: 'ACTION_TYPE' });
Cconst dispatch = useDispatch(); dispatch({ type: 'ACTION_TYPE' });
Dconst dispatch = useDispatch(); dispatch({ action: 'ACTION_TYPE' });
Lời giải
Đáp án đúng: "const dispatch = useDispatch(); dispatch({ type: 'ACTION_TYPE' });". Action trong Redux là một đối tượng thuần có trường type mô tả việc vừa xảy ra, có thể kèm payload; useDispatch của react-redux trả về hàm dispatch của store, và gọi dispatch với đối tượng có khoá type sẽ gửi action đó tới reducer. "const dispatch = useDispatch(); dispatch('ACTION_TYPE');" truyền một chuỗi, trong khi Redux yêu cầu action là đối tượng thuần nên báo lỗi Actions must be plain objects. "const dispatch = useDispatch(); dispatch(() => { type: 'ACTION_TYPE' });" viết arrow function có ngoặc nhọn: ngoặc nhọn ở đây là thân hàm, type: chỉ là một nhãn lệnh chứ không phải đối tượng, nên hàm trả về undefined; dispatch một hàm chỉ chạy được nhờ middleware thunk, và kể cả khi đó cũng không có action nào tới reducer. "const dispatch = useDispatch(); dispatch({ action: 'ACTION_TYPE' });" dùng khoá action thay cho type, đối tượng thiếu type nên Redux báo lỗi action không có thuộc tính type.
Mở trang câu hỏi này →
A<Route path='/users/:id' />
B<Route path='/users{?id}' />
C<Route path='/users[?id]' />
D<Route param='/users/:id' />
Lời giải

Đáp án đúng: "<Route path='/users/:id' /> ". Trong React Router, tham số động của URL được khai báo bằng dấu hai chấm đứng trước tên tham số trong prop path; route này khớp với /users/42 hay /users/abc, và component bên trong đọc giá trị bằng hook useParams, được một đối tượng có thuộc tính id mang chuỗi 42. Phương án "

Lời giải
<Route path='/users{?id}' />

" mượn cú pháp kiểu URI template, React Router không hiểu cú pháp này nên không tạo ra tham số id nào. Phương án "<Route path='/users[?id]' /> " cũng là cú pháp không có trong React Router; ngoặc vuông là quy ước đặt tên thư mục route động của Next.js. Phương án "<Route param='/users/:id' /> " viết đúng mẫu đường dẫn nhưng đặt vào prop param không tồn tại; Route chỉ nhận đường dẫn qua prop path, nên route này không có đường dẫn để khớp.

Mở trang câu hỏi này →
AUsing the <Route> component
BUsing the <Link> component
CUsing the <Switch> component
DUsing the <Redirect> component
Lời giải

Đáp án đúng: "Using the <Route> component". Trong React Router, mỗi tuyến đường được khai báo bằng một component Route với thuộc tính path chỉ mẫu đường dẫn và element chỉ component cần hiển thị khi khớp; ở v6 các Route được đặt bên trong Routes, và có thể lồng Route để tạo bố cục con. "Using the <Link> component" sai vì Link tạo liên kết để người dùng bấm chuyển trang phía client, nó điều hướng tới một route đã khai báo chứ không khai báo route. "Using the <Switch> component" sai vì Switch là component của v5 dùng để bọc các Route và chỉ hiển thị route đầu tiên khớp, đã được thay bằng Routes ở v6; bản thân nó không định nghĩa đường dẫn nào. "Using the <Redirect> component" sai vì Redirect của v5 dùng để chuyển hướng sang đường dẫn khác, ở v6 được thay bằng Navigate, không phải công cụ khai báo route.

Mở trang câu hỏi này →
AReduces the initial load time by splitting code into bundles
BEnsures that all components are loaded upfront
CProvides a better user experience by loading components only when needed
DAllows for dynamic imports and lazy loading of components
Lời giải
Đáp án đúng: "Ensures that all components are loaded upfront". Câu hỏi tìm điều KHÔNG phải lợi ích của React.lazy. React.lazy cùng import động tách component thành gói mã riêng và chỉ tải khi component đó được render lần đầu, nên nói nó bảo đảm mọi component được tải ngay từ đầu là ngược hẳn mục đích. Ba phát biểu kia đều đúng nên không được chọn. "Reduces the initial load time by splitting code into bundles" đúng vì gói ban đầu nhỏ hơn, trình duyệt tải và chạy nhanh hơn. "Provides a better user experience by loading components only when needed" đúng vì người dùng chỉ phải chờ phần mã của trang mình đang mở, phần còn lại tải sau và trong lúc chờ Suspense hiển thị fallback. "Allows for dynamic imports and lazy loading of components" đúng vì React.lazy nhận một hàm gọi import(), chính cú pháp import động mà công cụ đóng gói dựa vào để cắt chunk.
Mở trang câu hỏi này →
AEnable functional components to have state
BAutomatically optimize performance
CSimplify component logic
DPromote reusability of logic between components
Lời giải

Đáp án đúng gồm ba ý: "Enable functional components to have state", "Simplify component logic" và "Promote reusability of logic between components". useState và useReducer cho function component có state riêng mà không cần viết class; useEffect gom các phần logic liên quan, ví dụ đăng ký và huỷ đăng ký, vào cùng một chỗ thay vì rải qua componentDidMount, componentDidUpdate, componentWillUnmount, nên logic của component gọn và dễ theo dõi hơn; custom hook như useFetch hay useAuth đóng gói logic có state để nhiều component dùng lại mà không cần HOC hay render props. "Automatically optimize performance" không đúng vì Hooks không tự tối ưu gì cả; muốn tránh render thừa phải chủ động dùng useMemo, useCallback hoặc React.memo, và khai báo dependency sai còn có thể gây render lặp.

Mở trang câu hỏi này →
4414What is a "context consumer"?4 lựa chọn
AA component that provides data to a context.
BA component that only renders static content.
CA component that uses data made available within a context.
DA component that is responsible for updating the DOM directly
Lời giải
Đáp án đúng: "A component that uses data made available within a context.". Context API có hai vai: Provider đặt giá trị vào context qua prop value cho cả cây con bên dưới, còn consumer là component đọc giá trị đó, ngày nay bằng useContext, kiểu cũ là Context.Consumer với render prop. Consumer render lại mỗi khi value của Provider gần nhất thay đổi. "A component that provides data to a context." mô tả Provider, vai ngược với consumer. "A component that only renders static content." sai vì consumer đọc dữ liệu động từ context, có thể đổi theo thời gian. "A component that is responsible for updating the DOM directly" sai vì trong React component chỉ mô tả giao diện, chính React đảm nhận việc commit thay đổi vào DOM.
Mở trang câu hỏi này →
4415In React, what are “props” used for?4 lựa chọn
ATo style components with CSS
BTo pass data from a child component to a parent
CTo pass data from a parent component to a child
DTo store local state in functional components
Lời giải
Đáp án đúng: "To pass data from a parent component to a child". Props (properties, thuộc tính) truyền dữ liệu theo một chiều từ component cha xuống component con, giống thuộc tính JSX như name="Lan" đặt trên thẻ con; con đọc chúng qua tham số props và không được sửa. "To pass data from a child component to a parent" ngược chiều: muốn gửi dữ liệu từ con lên cha thì cha phải truyền xuống một hàm callback qua props để con gọi. "To style components with CSS" không phải mục đích của props: kiểu dáng đặt bằng className hoặc style; style có thể được truyền như một prop nhưng đó chỉ là một trường hợp truyền dữ liệu. "To store local state in functional components" là việc của useState, còn props là dữ liệu từ bên ngoài đưa vào và chỉ đọc.
Mở trang câu hỏi này →
4416What is the purpose of context in React?4 lựa chọn
AContext allows data to be passed between components without prop drilling.
BContext is used to fetch data from the server.
CContext is used to store the component's state.
DContext is used to style components.
Lời giải
Đáp án đúng: "Context allows data to be passed between components without prop drilling.". Prop drilling là tình trạng phải truyền props qua nhiều tầng component trung gian vốn không dùng tới dữ liệu, chỉ để nó tới được component sâu bên dưới; Context giải quyết bằng cách cho một Provider đặt giá trị ở tầng trên, và bất kỳ component con cháu nào cũng đọc thẳng bằng useContext, thường dùng cho chủ đề giao diện, ngôn ngữ hay người dùng đang đăng nhập. Phương án "Context is used to fetch data from the server." sai vì Context không gọi mạng; việc tải dữ liệu làm bằng fetch hay axios trong Effect hoặc thư viện riêng, kết quả mới có thể đưa vào Context. Phương án "Context is used to store the component's state." nhầm với useState, state cục bộ thuộc về từng component; Context chỉ phân phối một giá trị (có thể là state) xuống cây. Phương án "Context is used to style components." sai vì định kiểu là việc của CSS, CSS Modules hay styled-components.
Mở trang câu hỏi này →
AA synchronous function that returns HTML
BA guarantee that a function will execute twice
CAn object representing the eventual completion (or failure) of an asynchronous operation
DA function that blocks the main thread until complete
Lời giải
Đáp án đúng: "An object representing the eventual completion (or failure) of an asynchronous operation". Promise là object đại diện cho kết quả sẽ có trong tương lai của một thao tác bất đồng bộ như gọi API: nó bắt đầu ở trạng thái pending (đang chờ), sau đó chuyển sang fulfilled kèm giá trị khi thành công hoặc rejected kèm lý do khi thất bại; ta đăng ký xử lý bằng then, catch, finally hoặc dùng async/await, trong khi luồng chính vẫn chạy tiếp. "A synchronous function that returns HTML" sai vì Promise không phải hàm, càng không đồng bộ và không liên quan đến việc sinh HTML. "A guarantee that a function will execute twice" sai vì chữ promise ở đây nghĩa là hứa trả về một kết quả, và mỗi Promise chỉ chốt trạng thái đúng một lần chứ không chạy hàm hai lần. "A function that blocks the main thread until complete" sai vì mục đích của Promise chính là không chặn luồng chính; các hàm xử lý được gọi sau qua hàng đợi microtask.
Mở trang câu hỏi này →
4418What is async/await in JavaScript?4 lựa chọn
AIt is a JavaScript feature that makes asynchronous code look and behave like synchronous code.
BIt is used to send data to a server without blocking the UI.
CIt is a way to handle callback functions.
DIt is a method to manage state in React components.
Lời giải
Đáp án đúng: "It is a JavaScript feature that makes asynchronous code look and behave like synchronous code.". Từ khoá async khiến một hàm luôn trả về Promise, còn await bên trong hàm đó tạm dừng hàm cho tới khi Promise ngã ngũ rồi trả về giá trị, nhờ vậy mã bất đồng bộ được viết từ trên xuống dưới như mã đồng bộ và bắt lỗi được bằng try/catch, trong khi luồng chính của trình duyệt không bị chặn. "It is used to send data to a server without blocking the UI." mô tả việc gửi request bất đồng bộ (như fetch hay AJAX); async/await hay được dùng cho việc đó nhưng bản thân nó là cú pháp xử lý Promise, áp dụng cho mọi thao tác bất đồng bộ chứ không riêng gửi dữ liệu. "It is a way to handle callback functions." sai vì await làm việc với Promise, không với callback; nó chính là cách thay thế chuỗi callback lồng nhau. "It is a method to manage state in React components." sai vì async/await là tính năng của JavaScript, không liên quan đến state của React; state do useState hay useReducer quản lý.
Mở trang câu hỏi này →
AIt allows for a more readable and simpler syntax for handling asynchronous code.
BIt uses callbacks instead of promises.
CIt only works for synchronous operations.
DIt increases the loading time of web pages.
Lời giải
Đáp án đúng: "It allows for a more readable and simpler syntax for handling asynchronous code.". async/await là cú pháp xây trên chính Promise: hàm async luôn trả về Promise, còn await chờ một Promise ổn định rồi lấy giá trị, nhờ đó mã bất đồng bộ đọc tuần tự từ trên xuống như mã thường và bắt lỗi bằng try/catch quen thuộc thay vì nối nhiều then, catch. "It uses callbacks instead of promises." sai vì async/await không quay lại callback mà dùng Promise ở bên dưới. "It only works for synchronous operations." sai, cú pháp này sinh ra để xử lý thao tác bất đồng bộ như gọi API hay đọc tệp. "It increases the loading time of web pages." sai vì cách viết then hay await không làm trang tải chậm hơn; thời gian chờ phụ thuộc vào chính thao tác mạng chứ không phụ thuộc cú pháp.
Mở trang câu hỏi này →
AIt allows you to read values from the Redux store.
BIt allows you to update the Redux store state.
CIt is used to perform side effects.
DIt dispatches actions to update the state.
Lời giải
Đáp án đúng: "It allows you to read values from the Redux store.". useSelector nhận một hàm selector, chẳng hạn hàm lấy state.cart.items, chạy nó trên state hiện tại của store và trả kết quả cho component; nó còn đăng ký theo dõi nên khi một action làm giá trị được chọn thay đổi, component render lại. Hook này chỉ đọc, không làm thay đổi store. "It allows you to update the Redux store state." sai vì store chỉ đổi khi reducer xử lý một action, useSelector không có đường ghi nào. "It dispatches actions to update the state." mô tả useDispatch, hook trả về hàm dispatch để gửi action tới store. "It is used to perform side effects." là vai trò của useEffect trong component hoặc của middleware như redux-thunk trong Redux, không liên quan việc đọc store.
Mở trang câu hỏi này →