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
state
pour refléter les sélections de l'utilisateur. Ceci fournit le plus de contrôle, puisque toutes les modifications que vous faites àstate
sera 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 ledefaultValue
prop 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