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:
propsdan 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".refuntuk 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 .
statealih - alih props?
props. Komponen yang tidak terkontrol akan digunakan stateuntuk 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 refsdipanggil uncontrolled components( <value type="text" />). Komponen yang dikontrol mengelola statusnya sendiri melalui setStateatau mendapatkannya dari komponen induknya sebagai properti.
defaultValuemelalui 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.