Ich habe den folgenden Codeausschnitt:
onChange(e) {
e.persist
this.setState((prevState) => {
prevState[e.target.id] = e.target.value
return prevState
})
}
Wie würde ich den Status für jeden Schlüssel mithilfe des obigen Codes festlegen?
Dies ist der Ausgangszustand:
this.state = {
heading: this.props.match.params.length > 1 ? "Edit Post" : "Create Post",
title: '',
category: '',
body: '',
author: ''
}
Grundregel lautet:
Wir können das Konzept der berechneten Eigenschaftsnamen verwenden und einen beliebigen js-Ausdruck verwenden , um den Namen der Objekteigenschaft dynamisch zu berechnen. Dafür müssen wir den Ausdruck hineinstecken []
.
So was:
var obj = {
[10 * 20 + 1 - 5]: "Hello"
};
console.log('obj = ', obj);
Lösung:
Gemäß dem Code , den Sie geschrieben, müssen Sie setzen e.target.id
innen []
, wie folgt aus :
onChange(e) {
this.setState({
[e.target.id]: e.target.value
})
}
Oder wir können dieses Objekt zuerst erstellen und dann wie folgt an die setState
Funktion übergeben:
onChange(e) {
let obj = {};
obj[e.target.id] = e.target.value
this.setState(obj);
}
Auch das brauchst du nicht prevState
. Sie können die Statusvariable direkt mit einem neuen Wert aktualisieren. prevState
ist nur erforderlich, wenn der neue Statuswert vom vorherigen Statuswert abhängt, wie im Fall eines Zählers.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen