Câu trả lời:
Điều này liên quan đến các thành phần DOM trạng thái (phần tử biểu mẫu) và các tài liệu React giải thích sự khác biệt:
props
và thông báo thay đổi thông qua callbacks như onChange
. Thành phần mẹ "điều khiển" nó bằng cách xử lý lệnh gọi lại và quản lý trạng thái của chính nó và chuyển các giá trị mới làm đạo cụ cho thành phần được điều khiển. Bạn cũng có thể gọi đây là một "thành phần câm".ref
để tìm giá trị hiện tại của nó khi bạn cần nó. Điều này giống HTML truyền thống hơn một chút.Hầu hết các thành phần biểu mẫu React gốc hỗ trợ cả việc sử dụng có kiểm soát và không kiểm soát:
// Controlled:
<input type="text" value={value} onChange={handleChange} />
// Uncontrolled:
<input type="text" defaultValue="foo" ref={inputRef} />
// Use `inputRef.current.value` to read the current value of <input>
Trong hầu hết (hoặc tất cả) trường hợp, bạn nên sử dụng các thành phần được kiểm soát .
state
hơn là props
?
props
. Một thành phần không được kiểm soát sẽ sử dụng state
để kiểm soát giá trị nội bộ. Đây là điểm khác biệt chính.
controlled components
( <input type="text" value="value" onChange={handleChangeCallbackFn} />
) so với HTML truyền thống trong đó một phần tử đầu vào xử lý giá trị của chính chúng và có thể được đọc qua hàm refs
gọi uncontrolled components
( <value type="text" />
). Các thành phần được kiểm soát đang quản lý trạng thái của chính chúng thông qua setState
hoặc lấy nó từ thành phần mẹ của chúng làm đạo cụ.
defaultValue
thông qua các đạo cụ, nhưng nó lại thông báo cho bộ điều khiển onBlur
?
<Button onClick={() => console.log("clicked")}>Click</Button>
.