Comment passer de multiples paramètres au gestionnaire OnChange de l'entrée

Je rends la collection d'éléments d'entrée pour les objets en tableau.

render: function() { var ranges = []; this.props.ranges.map(function(range, index) { var rangeElement = <Input type="text" value={range.name} onChange={this.changeRangeName.bind(this)} /> ranges.push(rangeElement); }, this); // render ranges } 

Cela me permet d'écrire sur la fonction de gestion de change:

 changeRangeName: function (event) { var newName = event.target.value; }, 

Mais dans ce manipulateur, j'ai besoin de l'objet id of range que je souhaite modifier. Donc, je pourrais changer le changement, comment je crée des éléments de saisie dans la fonction de rendu et modifie:

 var rangeElement = <Input type="text" value={range.name} onChange={this.changeRangeName.bind(this, range.id)} /> 

Maintenant, mon gestionnaire recevra le paramètre range.id comme paramètre mais maintenant je n'ai pas la valeur newName. Je peux l'obtenir en utilisant des références

 var rangeElement = <Input type="text" ref={'range' + range.id} value={range.name} onChange={this.changeRangeName.bind(this, range.id)} /> 

C'est la seule solution que je connaisse, mais je soupçonne qu'il y en a de mieux.

L'argument de l' event est toujours adopté, mais l'argument rangeId est précédé de la liste des arguments, de sorte que votre méthode changeRangeName ressemblerait

 changeRangeName: function (rangeId, event) { var newName = event.target.value; }, 

Voir Function.prototype.bind ()

Je pense que de cette façon est plus facile:

  <Input type="text" value={range.name} onChange={(e) => this.changeRangeName(range.id, e)} ... onChange(id, e) { ... }