Способ React установить, какая опция выбрана для поля выбора, состоит в том, чтобы установить value
на самом <select>
себе специальную опору , соответствующую value
атрибуту <option>
элемента, который вы хотите выбрать. Для multiple
выбора эта опора может принимать вместо этого массив.
Теперь, поскольку это специальный атрибут, мне интересно, какой канонический способ - получить выбранные параметры в той же структуре-массив-значений-параметров, когда пользователь что-то меняет (так что я могу передать его через обратный вызов в родительский компонент и т. д.), поскольку предположительно то же value
свойство не будет доступно для элемента DOM.
Чтобы использовать пример, с текстовым полем вы должны сделать что-то вроде этого (JSX):
var TextComponent = React.createClass({
handleChange: function(e) {
var newText = e.target.value;
this.props.someCallbackFromParent(newText);
},
render: function() {
return <input type="text" value={this.props.someText} onChange={this.handleChange} />;
}
});
Что эквивалентно замене ???
для этого компонента множественного выбора?
var MultiSelectComponent = React.createClass({
handleChange: function(e) {
var newArrayOfSelectedOptionValues = ???;
this.props.someCallbackFromParent(newArrayOfSelectedOptionValues);
},
render: function() {
return (
<select multiple={true} value={this.props.arrayOfOptionValues} onChange={this.handleChange}>
<option value={1}>First option</option>
<option value={2}>Second option</option>
<option value={3}>Third option</option>
</select>
);
}
});
select
в один массив? Скажите, после того, как вытащили их все черезdocument.querySelectorAll('select')
?