ma fonction ressemble à ceci:
this.setState(prevState => ({
time : prevState.time + 1
}), function() {
doSomethingWithNewState(this.state.time)
})
est-il correct d'utiliser wait dans cette situation? comme ça:
await this.setState(prevState => ({
time : prevState.time + 1
}));
doSomethingWithNewState(this.state.time);
Non, this.setState
ne renvoie aucune promesse.
Donc, vous ne pouvez pas utiliser attendre dans ce cas. Vous devez utiliser le rappel.
Comme indiqué dans la réponse précédente, setState()
ne renvoie pas de promesse. Vous ne pouvez donc pas l'utiliser avec await
comme vous le souhaitez. (Bien que vous puissiez aussi await
code synchrones).
Quand on dit que setState()
est asynchrone _, cela signifie que l’effet effet de setState()
peut se produire ultérieurement.
De plus, bien que lire this.state
dans la fonction de rappel vous donne l’état du composant à ce moment précis du moment où le rappel est exécuté, ce n’est pas exactement ce à quoi vous vous attendiez, car tout rappel les fonctions sont appelées après un lot d'appels setState()
est exécuté. ( Voir ce numéro ).
setState
prend un rappel? Pas sûr pourquoi le premier exemple serait un problème
https://medium.learnreact.com/setstate-takes-a-callback-1f71ad5d2296