ich Code wie folgt häufig schreiben (für Wiederverwendung):setState (..., Rückruf) ruft Rückruf vor Zustand gesetzt wurde
function doSomething() {
// I do something with this.state.MyVar
}
function buttonClicked(e) {
this.setState({MyVar: e.target.value}, this.doSomething());
}
function otherEvent(e) {
this.setState({MyVar: e.target.value}, this.doSomething());
}
Sobald doSomething() aufgerufen wird, ist es nicht ungewöhnlich, der Wert, der sich von dem von e.target.value unterscheidet. Es scheint, als ob der Rückruf tatsächlich nicht auftritt nach der Staat wurde aktualisiert?
Hinweis, das immer funktioniert:
function doSomething(value) {
// I do something with value
}
function buttonClicked(e) {
this.setState({MyVar: e.target.value});
this.doSomething(e.target.value);
}
Dies ist in Google Chrome, und mit der neuesten Version von ReactJS.
Ah, dumm mich ... dachte, es wäre so etwas ... – Jay
@Jay Der Rückruf wird ausgeführt, also eine Funktion * Referenz * benötigt wird. Wenn Sie es sofort aufrufen, versuchen Sie Folgendes: '();' –
Li357
Was passiert, wenn ich meine Anrufe umschließe, damit ich die Parameter behalten kann? this.setState ({MeineVar: "Hallo"}, Funktion() {MeineFunktion ("a", "b", "Hallo");}); – Jay