Способ 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>
);
}
});