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.
import React from 'react';
const Greeting = ({ name }) => {
return <h1>Hello, {name}!</h1>;
};
export default Greeting;Đáp án đúng: "By using the bind method when binding the event handler". Hàm xử lý sự kiện được React gọi với một đối số là đối tượng sự kiện, nên muốn truyền thêm dữ liệu như id của dòng được nhấp thì phải tạo trước một hàm mới đã gắn sẵn đối số đó; Function.prototype.bind làm đúng việc này, ví dụ onClick={
handleDelete.bind(null, id)
}sẽ gọi handleDelete(id, event). Cách tương đương hay gặp hơn là hàm mũi tên onClick={() => handleDelete(id)}, cùng nguyên lý tạo hàm bọc. "By using the event.target property" sai vì event.target chỉ là phần tử DOM phát ra sự kiện; đọc thuộc tính của nó là cách lấy dữ liệu gián tiếp, không phải truyền đối số. "By using the event.data property" sai vì sự kiện nhấp không có thuộc tính data để chứa đối số tự chọn; data chỉ có ở một số loại sự kiện như sự kiện nhập liệu. "React 19 does not support passing additional arguments to event handlers" sai vì React 19 vẫn cho làm như mọi phiên bản trước.
Đáp án đúng: "
<Child onClick={
handleClick
}
/>". Để truyền hàm làm prop, đặt chính tham chiếu hàm trong ngoặc nhọn, không kèm dấu gọi hàm; Child nhận prop onClick và tự gọi nó khi có sự kiện, chẳng hạn gắn vào nút bên trong. Tên onClick theo quy ước đặt tên prop sự kiện là on cộng tên sự kiện. Cần nói thẳng: "
<Child handleClick={
handleClick
}
/>" cũng truyền đúng một hàm, chỉ khác tên prop, và trong Child dùng props.handleClick vẫn chạy; nó không sai về cơ chế, chỉ lệch quy ước đặt tên prop sự kiện mà đáp án này theo. "
<Child onClick={
handleClick()
}
/>" sai vì có dấu ngoặc tròn nên handleClick bị gọi ngay mỗi lần cha render, prop nhận giá trị trả về chứ không phải hàm, và nếu hàm đổi state sẽ gây vòng render vô hạn. "
<Child handleClick={
handleClick()
}
/>" mắc cùng lỗi gọi hàm ngay khi render, chỉ khác tên prop.
Đáp án đúng: "const add = (a, b) => { return a + b; }". Arrow function (hàm mũi tên) của ES6 gồm danh sách tham số trong ngoặc tròn, mũi tên =>, rồi thân hàm; ở đây thân có ngoặc nhọn nên cần return tường minh, còn viết gọn (a, b) => a + b cũng cho cùng kết quả. "const add = function(a, b) { return a + b; }" là function expression gán vào hằng, chạy đúng nhưng không phải arrow function. "const add => a + b" sai cú pháp: thiếu dấu bằng và thiếu danh sách tham số trước mũi tên, nên JavaScript báo lỗi ngay khi phân tích mã. "function add(a, b) { return a + b; }" là function declaration truyền thống, cũng cộng đúng hai số nhưng không dùng cú pháp mũi tên được hỏi.
import React, { useState } from 'react';
function App() {
const [showMessage, setShowMessage] = useState(false);
const toggleMessage = () => {
setShowMessage(!showMessage);
};
return (
<div>
<button onClick={toggleMessage}>Toggle Message</button>
{showMessage && <p>This is a message!</p>}
</div>
);
}
export default App;