Reactjs setState() avec une dynamique de nom de la clé?
EDIT: ceci est un doublon, voir ici
Je ne peux pas trouver des exemples de l'utilisation d'une dynamique nom de la clé lors de la configuration de l'état. C'est ce que je veux faire:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
où l'événement.cible.id est utilisé comme état d'être mis à jour. Ce n'est pas possible de Réagir?
- C'est un double de toute question concernant la dynamique des clés d'objet. Ce n'est pas spécifique à réagir
- var newstate = {}; newstate[événement.cible.id] = event.cible.id; ce.setState(newstate);
- Merci, je n'avais pas une bonne poignée sur l'utilisation des objets en général.
- Double Possible de Comment puis-je créer une clé dynamique à être ajouté à l'objet JavaScript variable
- Je suis à ce problème, mais, qu'avez-vous mis sur votre État initial? Il n'a pas d'importance, non?
Vous devez vous connecter pour publier un commentaire.
Grâce à @Cory astuce, j'ai utilisé ceci:
Si vous utilisez ES6 ou la Babel transpiler pour transformer votre JSX code, vous pouvez accomplir cela avec propriété calculée noms, trop:
computed property names
trad
, c'est ce que je cherchais à éviter la duplication de code pour<Radio />
mise en œuvre.this.setState({ [event.target.id]: event.target.value });
puis comment voulez-vous accéder à cet état en utilisantthis.state......
?Lorsque vous avez besoin de gérer de multiples contrôlée des éléments d'entrée, vous pouvez ajouter un attribut de nom à chaque élément et de laisser la fonction de gestionnaire de choisir quoi faire en fonction de la valeur de l'événement.cible.nom.
Par exemple:
JS:
this.state([event.target.name])
?Comment je l'ai accompli...
this.forceUpdate();
qui ne doit pas avoir été le cas avec la dernière Réagir. Nous allons voir quel est le problème plus tard!!!!Voulais juste ajouter, que vous pouvez également de la structuration de refactoriser le code et le rendre plus lisible.
En boucle avec
.map
fonctionne comme ceci:Note le
[]
danstype
paramètre.Espérons que cela aide 🙂
Avec ES6+ il vous suffit de faire [
${variable}
]Pouvez utiliser une propagation de la syntaxe, quelque chose comme ceci: