Form | Mô tả |
---|---|
Bên trái, form dạng " Uncontrolled " | Dù ta đã nhập 2 ô "firstName" và "lastName", nhưng chữ "fullName" chỉ hiện ra sau khi click nút Submit. |
Bên phải, form dạng " Controlled " | Dù nút Submit đã bị vô hiệu hóa, thì chỉ cần gõ vào 1 (hoặc cả 2) ô "firstName", ô "lastName", form sẽ tự tổng hợp ra "fullName". |
See the Pen ReactJS - Form - Controlled and Uncontrolled form (inputs)
Yeah, vậy là ít nhất ta đã có cảm giác thế nào là controlled, thế nào là uncontrolled. Cảm giác đó là gì? Hãy liên hệ với những thứ bên ngoài cho dễ nhớ.Form "uncontrolled" | Form "controlled" |
---|---|
Là pull , giống tít ngày xưa muốn tải email mới về, ta phải vào ứng dụng, nhấn Refresh, thì thông tin mới được load về. Ở đây ta phải ấn "Submit" thì data mới được trả về. | Là push , thời bây giờ, không cần thao tác, một khi được phép, server sẽ đẩy email mới về máy ta liên tục, chính là vụ không cần nhấn Submit. |
Là cô y tá trực ở bên ngoài, chỉ khi bệnh nhân kéo cái dây "cấp cứu" thì mới nhảy bổ vào hỏi han có chuyện gì. | Vẫn là cô y tá kia, giờ bằng một cách nào đấy (như cắm cảm biến chằng chịt vào bệnh nhân), nên bệnh nhân bắt đầu buồn tè là cô cũng biết. |
ref
để lấy dữ liệuonClick
handler để trigger hàm handleSubmitClick
. Bên trong hàm handleSubmitClick
(khai báo chỗ khác), ta muốn làm gì là việc của ta.onClick
, ta chỉ có giá trị mới trong input khi click vào 1 thứ gì đó.<input type="text" placeholder="first name" ref={input => this.firstName = input} />
<input type="text" placeholder="family name" ref={input => this.familyName = input} />
<button onClick={this.handleSubmitClick}>Submit</button>
onChange
handler để trigger hàm handleNameChange
. Trong handleNameChange
, ta cập nhật giá trị trong từng ô input thông qua setState()
.onChange
, kết hợp với setState()
, ta luôn có được giá trị mới nhất của input mà chẳng phải đụng tay chân.<input type="text" placeholder="first name" name="firstName" onChange={this.handleNameChange} />
<input type="text" placeholder="family name" name="familyName" onChange={this.handleNameChange} />
uncontrolled
form dùng ref
không phổ biến, không được ưu tiên sử dụng.
Tính năng cần | uncontrolled | controlled |
---|---|---|
Nhận giá trị 1 lần | ✔️ | ✔️ |
Kiểm tra (validate) dữ liệu sau khi submit | ✔️ | ✔️ |
Kiểm tra dữ liệu tức thời sau khi gõ xong | ❌ | ✔️ |
Disable nút submit tùy theo điều kiện | ❌ | ✔️ |
Ép buộc format cho dữ liệu nhập vào | ❌ | ✔️ |
Một data, nhiều input | ❌ | ✔️ |
Nhập dữ liệu động | ❌ | ✔️ |
Cùng nhau học tập, khám phá các kiến thức nền tảng về Lập trình web, mobile, database nhé.
Nền tảng kiến thức - Hành trang tới tương lai hân hạnh phục vụ Quý khách!
Khám phá, trải nghiệm ngay
Vui lòng đăng nhập để gởi bình luận!
Đăng nhậpChưa có bình luận nào!