Maison > interface Web > js tutoriel > Comment puis-je accéder aux valeurs d'état mises à jour immédiatement après avoir appelé setState() dans React ?

Comment puis-je accéder aux valeurs d'état mises à jour immédiatement après avoir appelé setState() dans React ?

Linda Hamilton
Libérer: 2024-12-16 16:35:15
original
939 Les gens l'ont consulté

How Can I Access Updated State Values Immediately After Calling setState() in React?

L'énigme de la propagation de l'état de React

La méthode setState() de React pose un défi lorsque l'on tente de récupérer les valeurs d'état mises à jour immédiatement après leur mise à jour. Cela est dû à la nature asynchrone de setState().

Considérez le code suivant :

let total = newDealersDeckTotal.reduce((a, b) => 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
Copier après la connexion

Le problème ici est que l'appel setState() est asynchrone. Cela signifie que lorsque la deuxième instruction console.log s'exécute, l'état n'a pas encore été mis à jour.

Pour résoudre ce problème, le modèle de rappel peut être utilisé. Cela implique de transmettre une fonction de rappel à setState() qui sera exécutée une fois le changement d'état terminé :

this.setState({ dealersOverallTotal: total }, () => {
  console.log(this.state.dealersOverallTotal, 'dealersOverallTotal1');
});
Copier après la connexion

En utilisant cette approche, l'instruction du journal de la console ne s'exécutera qu'une fois l'état mis à jour, garantissant que la valeur correcte est affichée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal