Saya menggunakan React untuk membuat elemen pemilihan yang terkontrol. Aplikasi saya memvalidasi nilai opsi baru yang dipilih oleh pengguna dan kemudian memperbarui nilai tersebut pada elemen. Validasi memerlukan waktu dan perilaku yang saya amati adalah sebagai berikut:
- Pengguna memilih opsi
- Elemen mengubah opsi yang dipilih menjadi indeks 0
- Setelah periode validasi selesai, elemen memperbarui dirinya ke nilai baru
Saya tidak mengerti mengapa elemen kembali ke indeks pertama dan bagaimana cara mencegahnya (kecuali dengan segera menetapkan nilai yang tidak diinginkan dalam aplikasi saya)
Gunakan JSFiddle ini untuk melihat perilaku ini (pilih Opsi2) https://jsfiddle.net/qo39g2j4/
var Select = React.createClass({
render: function() {
return (
<select id="my-select" value={this.props.value} onChange={this.props.onChange}>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
</select>
);
}
});
var Wrapper = React.createClass({
getInitialState: function () {
return {value: "Option3"};
},
onChange: function (event) {
var value = event.target.value;
setTimeout(function () {
this.setState({value: value});
}.bind(this), 1000); // this simulates the validation period
},
render: function () {
return (
<Select
value={this.state.value}
onChange={this.onChange}/>
);
}
});
ReactDOM.render(
<Wrapper/>,
document.getElementById("container")
);