Saya mencoba menginisialisasi bidang terkontrol sebagai reaksi, tetapi saya tidak tahu nilai awalnya selama konstruksi.
Pemahaman saya adalah meskipun Anda melakukan setState, yang menyebabkan rendering ulang, ini tidak akan mengubah nilai kontrol - namun saya tidak yakin mengapa.
Jadi, yang berikut ini tidak akan berfungsi:
componentDidMount() {
... // code to get value
this.setState({ value: "hello world" });
return ( <input type="text" value={this.state.value} onChange={this.handleChange} />
}
Sebagai gantinya, saya mencoba merender input dalam panggilan balik setState - untuk memastikan bahwa nilainya telah ditetapkan:
componentDidMount() {
... // code to get value
this.setState({ value: "hello world" }, this.renderInput);
}
renderInput = () => {
this.input = ( <input type="text" value={this.state.value} onChange={this.handleChange} />
}
Catatan: formulir saya menyertakan {ini.input)
Pada contoh kedua, formulir saya ditampilkan dengan sempurna, dan masukan diinisialisasi. Namun, kemudian fungsi onChange dipanggil, meskipun memperbarui status dengan benar, perubahan status tidak diambil - kolom input saya dibekukan, seolah-olah tidak ada onChange sama sekali.
Ini benar-benar membuat saya bingung dan saya ingin tahu apakah ada cara untuk menginisialisasi bidang saya tanpa harus memanggil fungsi yang berpotensi lambat di dalam konstruksi.
<input>
daricomponentDidMount()
? Apa yangthis.handleChange
mu lakukan? dapatkah Anda memasukkan fungsirender()
Anda? - person Pipe   schedule 12.04.2018componentDidMount
tidak akan menghasilkan apa-apa. - person ecraig12345   schedule 13.04.2018handleChange
, karena mungkin di situlah masalahnya - person ecraig12345   schedule 13.04.2018