Méthode React setState() et immuabilité de l'état
Dans React, la méthode setState() est utilisée pour mettre à jour l'état du composant. Cependant, il est important de comprendre que l'appel de setState() ne mute pas immédiatement l'objet d'état.
Pourquoi la mutation d'état est asynchrone ?
La documentation React explique que setState() initie une « transition d'état en attente ». Cela crée une mise à jour en attente de l'état, mais accéder à this.state après avoir appelé setState() peut renvoyer l'état existant. En effet, React peut mettre à jour l'état par lots pour des raisons de performances.
Démonstration de la nature asynchrone
Considérez l'exemple de code suivant présenté dans la question :
handleChange: function(event) { console.log(this.state.value); // Prints the initial value this.setState({value: event.target.value}); console.log(this.state.value); // Prints the same value as above }
Dans cet exemple, lorsque la valeur d'entrée est mise à jour, la méthode handleChange est appelée. La première instruction console.log imprime la valeur de l'état initial, tandis que la deuxième instruction console.log est censée imprimer la valeur mise à jour. Cependant, comme setState() fonctionne de manière asynchrone, la deuxième instruction console.log renvoie toujours la valeur initiale.
Solution pour une mise à jour immédiate
Si vous devez exécuter une fonction après la mise à jour de l'état, vous pouvez le transmettre en rappel à setState() :
this.setState({value: event.target.value}, function () { console.log(this.state.value); // Prints the updated value });
Dans ce cas, le rappel sera invoqué une fois la mise à jour de l'état terminée et la valeur mise à jour sera disponible dans this.state.
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!