Pourquoi avons-nous un rappel dans setState ?
Je suis nouveau pour réagir et j'essaie de comprendre mais je ne suis pas capable de comprendre pleinement.
3 Réponses :
increasePrice = () => {
this.setState({
price: this.state.price + 1
},()=>{
this.props.getPriceData(this.state.price)
})}
setState est de nature asynchrone. Si vous souhaitez utiliser l'état mis à jour juste après l'avoir défini, le rappel d'état est utilisé.
Exemple-
setState(
{ name: "ABC" },
() => console.log(this.state)
);
// => { name: "ABC" }
Lisez ceci SO pour savoir quand l'utiliser.
Comme mentionné dans le doc: https://reactjs.org/docs/react-component.html#setstate
setState () ne met pas toujours immédiatement à jour le composant. Il peut regrouper ou reporter la mise à jour à plus tard. Cela fait de la lecture de this.state juste après avoir appelé setState () un piège potentiel. À la place, utilisez componentDidUpdate ou un callback setState (setState (updater, callback)), dont l'un ou l'autre est garanti de se déclencher après l'application de la mise à jour. Si vous devez définir l'état en fonction de l'état précédent, lisez l'argument du programme de mise à jour ci-dessous.
Vous ne devez jamais modifier l'objet d'état directement, mais utiliser à la place la fonction de mise à jour fournie par setState():
// Bad
this.state.counter = this.state.counter + this.props.step;
// Good
this.setState((state, props) => {
return {
counter: state.counter + props.step
};
});
p >