Apa saja komponen terkontrol dan komponen tak terkontrol di ReactJS? Bagaimana mereka berbeda satu sama lain?
Jawaban:
Ini terkait dengan komponen DOM yang stateful (elemen formulir) dan dokumen React menjelaskan perbedaannya:
props
dan memberitahukan perubahan melalui callback seperti onChange
. Komponen induk "mengontrol" dengan menangani callback dan mengelola statusnya sendiri dan meneruskan nilai baru sebagai props ke komponen yang dikontrol. Anda juga bisa menyebutnya sebagai "komponen bodoh".ref
untuk menemukan nilai saat ini ketika Anda membutuhkannya. Ini sedikit lebih seperti HTML tradisional.Sebagian besar komponen bentuk React asli mendukung penggunaan terkontrol dan tidak terkontrol:
// 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>
Dalam sebagian besar (atau semua) kasus, Anda harus menggunakan komponen terkontrol .
state
alih - alih props
?
props
. Komponen yang tidak terkontrol akan digunakan state
untuk mengontrol nilai itu sendiri secara internal. Inilah perbedaan utamanya.
controlled components
( <input type="text" value="value" onChange={handleChangeCallbackFn} />
) vs. HTML tradisional di mana elemen input menangani nilainya sendiri dan dapat dibaca melalui refs
dipanggil uncontrolled components
( <value type="text" />
). Komponen yang dikontrol mengelola statusnya sendiri melalui setState
atau mendapatkannya dari komponen induknya sebagai properti.
defaultValue
melalui props, tetapi yang memberi tahu controller onBlur
?
<Button onClick={() => console.log("clicked")}>Click</Button>
.Komponen yang dikontrol adalah komponen yang mendapatkan nilai yang diubah dari fungsi callback dan komponen yang tidak dikontrol adalah komponen yang memiliki nilai dari DOM. Misalnya, ketika nilai input diubah, kita bisa menggunakan fungsi onChange di Controlled Component dan juga kita bisa mendapatkan nilainya menggunakan DOM seperti ref.