Я использую React для создания управляемого элемента выбора. Мое приложение проверяет новое значение параметра, выбранное пользователем, а затем обновляет это значение в элементе. Проверка занимает некоторое время, и я наблюдаю следующее поведение:
- Пользователь выбирает вариант
- Элемент изменяет выбранный параметр на индекс 0
- По истечении периода проверки элемент обновляется до нового значения.
Я не понимаю, почему элемент возвращается к первому индексу и как я могу предотвратить это (за исключением немедленной установки значения, которое нежелательно в моем приложении)
Используйте этот JSFiddle, чтобы увидеть это поведение (выберите вариант 2) 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")
);