Спосіб реагування, щоб встановити, який параметр буде обраний для поля вибору, полягає у встановленні спеціального 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
s в один масив? Скажіть, схопивши їх усіх черезdocument.querySelectorAll('select')
?