Comment obtenir la valeur sélectionnée d'un menu déroulant dans ReactJS
j'utilise react et je veux obtenir la valeur de l'option sélectionnée d'un dropdown dans react mais je ne sais pas comment. Toutes les suggestions? merci! Ma liste déroulante est juste une sélection de la forme:
<select id = "dropdown">
<option value="N/A">N/A</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
3 réponses
le code dans Le render méthode représente le composant à un moment donné.
Si vous n' quelque chose comme ceci, l'utilisateur ne pourra pas faire de sélections en utilisant le contrôle de formulaire:
<select value="Radish">
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
il y a Donc deux solutions pour travailler avec les contrôles de formulaires:
- Composants Contrôlés utiliser la composante
statepour refléter les sélections de l'utilisateur. Ceci fournit le plus de contrôle, puisque toutes les modifications que vous faites àstatesera reflété dans le composant de rendu:
exemple:
var FruitSelector = React.createClass({
getInitialState:function(){
return {selectValue:'Radish'};
},
handleChange:function(e){
this.setState({selectValue:e.target.value});
},
render: function() {
var message='You selected '+this.state.selectValue;
return (
<div>
<select
value={this.state.selectValue}
onChange={this.handleChange}
>
<option value="Orange">Orange</option>
<option value="Radish">Radish</option>
<option value="Cherry">Cherry</option>
</select>
<p>{message}</p>
</div>
);
}
});
React.render(<FruitSelector name="World" />, document.body);
JSFiddle:http://jsfiddle.net/xe5ypghv/
Composants Non Contrôlés L'autre option est de ne pas contrôler la valeur et de simplement répondre à
onChangeévénements. Dans ce cas, vous pouvez utiliser ledefaultValueprop pour définir une première valeur.<div> <select defaultValue={this.state.selectValue} onChange={this.handleChange} > <option value="Orange">Orange</option> <option value="Radish">Radish</option> <option value="Cherry">Cherry</option> </select> <p>{message}</p> </div>
http://jsfiddle.net/kb3gN/10396/
La doc de ce sont grandes: http://facebook.github.io/react/docs/forms.html et aussi montrer comment travailler avec plusieurs sélections.
UPDATE
une variante de L'Option 1 (utilisant un composant contrôlé) est d'utiliser Redux et Réagissent-Redux pour créer un composant du conteneur. Ce implique connect et mapStateToProps fonction, ce qui est plus facile qu'il n'y paraît, mais probablement exagéré si vous commencez à peine.
implémentez votre Dropdown comme
<select id = "dropdown" ref = {(input)=> this.menu = input}>
<option value="N/A">N/A</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
maintenant, pour obtenir la valeur de l'option sélectionnée dans le menu déroulant, il suffit d'utiliser:
let res = this.menu.value;
il suffit d'utiliser onChange événement <select> objet.
Valeur sélectionnée dans e.target.value puis.
Par le chemin, c'est une mauvaise pratique à utiliser id="...". Il est préférable d'utiliser ref=">.."
http://facebook.github.io/react/docs/more-about-refs.html