Réagir setState pas la mise à jour de l'état
J'ai donc ceci:
let total = newDealersDeckTotal.reduce(function(a, b) {
return a + b;
},
0);
console.log(total, 'tittal'); //outputs correct total
setTimeout(() => {
this.setState({dealersOverallTotal: total});
}, 10);
console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1'); //outputs incorrect total
newDealersDeckTotal est juste un tableau de nombres [1, 5, 9]
par exemple
cependant this.state.dealersOverallTotal
ne donne pas le total correct mais total
? Je l'ai même mis dans un délai de retard pour voir si cela a résolu le problème.
de toute évidence, ou dois-je poster plus de code?
stackoverflow.com/a/36087156/4453045
cheers!!
En plus de ce qui est dit dans les réponses, vous êtes explicitement la journalisation de la valeur de l'état, avant vous appelez
non, je suis à l'appel de cette.état après je l'ai mis. Je suis de l'enregistrement d'une variable avant de l'. non?
En raison de l'attente de votre
cheers!!
En plus de ce qui est dit dans les réponses, vous êtes explicitement la journalisation de la valeur de l'état, avant vous appelez
setState
.non, je suis à l'appel de cette.état après je l'ai mis. Je suis de l'enregistrement d'une variable avant de l'. non?
En raison de l'attente de votre
setState
est en effet exécuté après que vous vous connectez à l'état. Je pense que ce que vous vouliez faire dans le débogage a été de mettre le console.log
partie à l'intérieur du délai d'attente, et le setState
à l'extérieur.OriginalL'auteur The worm | 2017-01-03
Vous devez vous connecter pour publier un commentaire.
setState()
est généralement asynchrone, ce qui signifie qu'au moment de votreconsole.log
l'état, il n'est pas mis à jour encore. Essayez de mettre le journal dans le rappel de lasetState()
méthode. Il est exécuté après le changement d'état est complet:setState
.Cela fonctionne pour moi aussi, dans le passé, j'ai utilisé ceci: "cela.setState({someVar: newValue},function(){ console.log("forcer la mise à jour});" mais pour une raison quelconque, il était pas worring plus, lorsque j'ai mis à jour le code comme décrit ci-dessus, il travail. aucune idée pourquoi?
Devrait fonctionner aussi, la syntaxe n'est pas bonne (manquant entre parenthèses):
this.setState({someVar: newValue},function(){ console.log("force update") });
imgur.com/Ku0OjTl s'il vous Plaît dites-moi ce que je dois faire pour me débarrasser de ce problème.
OriginalL'auteur Fabian Schultz
setState est asynchrone. Vous pouvez utiliser la méthode de rappel, pour obtenir la mise à jour de l'état.
OriginalL'auteur Mahesh Joshi
setState()
prend le temps de muter la valeur et le javascript estasynchronous
et donc votreconsole.log()
sera exécutée avant lasetState
mute les valeurs et donc vous voyez le résultat.Pour le résoudre , journal de la valeur dans la
callback function of setState
commeOriginalL'auteur Shubham Khatri
À l'aide async/await
OriginalL'auteur Dev01