web-dev-qa-db-fra.com

Est-il correct d'utiliser wait setState ()?

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);
3
MRaimon

Non, this.setState ne renvoie aucune promesse.

Donc, vous ne pouvez pas utiliser attendre dans ce cas. Vous devez utiliser le rappel.

7
Anas

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 ). 

2
Dan Burzo

setState prend un rappel? Pas sûr pourquoi le premier exemple serait un problème

https://medium.learnreact.com/setstate-takes-a-callback-1f71ad5d2296

0
stackoverfloweth