zurückbleibt In meiner React-Komponente habe ich eine Funktion, die this.setState
aufruft, und aktualisiert einige Zustände. Einer von ihnen ist jedoch immer ein Zustand "hinter", und ich vermute, dass es daran liegt, wie es heißt. HierEin Zustand, der nach setState
ist die Funktion, in der die Zustände eingestellt sind:
handleReps(reps) {
var average = this.getAverage();
this.setState({
var1: CALCULATORS.epley(reps, this.state.weight),
var2: CALCULATORS.brzycki(reps, this.state.weight),
var3: CALCULATORS.lander(reps, this.state.weight),
// some more
average: average
});
}
nun alle diese Aktualisierung in Ordnung, und sind in der DOM geändert, aber der average
Zustand ist immer ein Zyklus hinter sich. Das heißt, es zeigt immer den Wert an, den es VOR der letzten Änderung hätte haben sollen. I.e. das letzte Mal setState
wurde aufgerufen.
Gibt es bekannte Faktoren, die diese Verzögerung in einem der Zustände verursachen können?
EDIT: Hier ist die getAverage()
Funktion.
getAverage() {
return CALCULATORS.average([
this.state.epley, this.state.brzycki, this.state.lander,
this.state.lombardi, this.state.mayhew, this.state.oconner,
this.state.wathen
])
}
Gibt es etwas in der Methode this.getAverage(); das verwendet Wert von einer Variablen, die aktualisiert wird, wenn der setState geschieht? Wenn Sie getAverage-Code anzeigen können, könnte dies helfen, das Problem zu lösen, aber ich schätze, dass getAverage eine Variable verwendet, die nach setState nicht aktualisiert wurde, um den Durchschnittswert zurückzugeben, bevor er auf Sie aktualisiert wird. Sie können auch die react-Methode componentDidUpdate überprüfen, um damit umzugehen. Ref: https://facebook.github.io/react/docs/component-specs.html#updating-componentdidupdate –
@ViniciusVieira - Ja, die 'getAverage'-Funktion verwendet ALLE Zustände, die vor der letzten gesetzt sind. In Frage gestellt. – Alec
Ich denke, es ist nicht mit getAverage verwandt, versuchen Sie, den Durchschnitt in den reactjs Methoden componentDidUpdate und componentWillUpdate zu protokollieren und Durchschnittswerte dort zu überprüfen, sollte es helfen, zu klären. –