La forma de React para establecer qué opción se selecciona para un cuadro de selección, es establecer un valueaccesorio especial en <select>sí mismo, correspondiente al valueatributo en el <option>elemento que desea seleccionar. Para multipleseleccionar, este accesorio puede aceptar una matriz en su lugar.
Ahora que este es un atributo especial, me pregunto cuál es la forma canónica de recuperar las opciones seleccionadas en la misma estructura de matriz de valores de opción cuando el usuario cambia las cosas (para que pueda pasarlo a través de una devolución de llamada a un componente principal, etc.), ya que presumiblemente la misma valuepropiedad no estará disponible en el elemento DOM.
Para usar un ejemplo, con un campo de texto, haría algo como esto (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} />;
}
});
¿Cuál es el equivalente a reemplazar ???para este componente de selección múltiple?
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>
);
}
});
selects en una matriz? ¿Diga después de agarrarlos a todos víadocument.querySelectorAll('select')?