0
votes

Comment puis-je console.log un état modifié dans React?

Je suis nouveau dans React et je travaille sur le code de quelqu'un d'autre (jeté dans le grand bain).

Il y a un simple bouton avec un gestionnaire handleClick () . Je veux incrémenter un état spécifique de 1.

À cet effet, j'ai essayé:

state = {
  page: 0,
}

  handleClick() {

    this.setState(state => ({
      page: state.page + 1
    }))

    console.log(page)
  }

mais cela produit juste une page n'est pas erreur définie .

J'ai essayé différentes combinaisons de ce qui précède, par exemple console.log (state.page) , page: page + 1 , etc. mais n'obtient aucun résultat.

Quelqu'un saurait-il comment je pourrais consigner la console pour tester si l'état est en cours de mise à jour?


0 commentaires

4 Réponses :


2
votes

Passez simplement une fonction de rappel à votre this.setState qui sera appelée après la mise à jour de l'état. Quelque chose comme ci-dessous:

this.setState(state => ({
      page: state.page + 1
    }), () => console.log(this.state) )

exemple de sandbox


1 commentaires

C'est la manière (en utilisant la fonction de rappel setState).



0
votes

Vous ne pouvez pas vous référer directement à la page. Vous devez utiliser une référence this.state . Essayez:

  handleClick() {
    this.setState(state => ({
      page: state.page + 1
    }))
    console.log(this.state.page)
  }


0 commentaires

0
votes

setState dans React est une méthode asynchrone, donc lorsque vous essayez de consolider l'état mis à jour juste après l'avoir mis à jour, console.log vous fournira l'état précédent uniquement . Donc, pour contrer, vous devez consolider l'état dans une fonction de rappel de setState comme ceci:

handleClick() {

    this.setState({
      page: this.state.page + 1
    }, () => {
       console.log(this.state.page)
    })
}

Maintenant, console.log vous donnera l'état mis à jour. J'espère que cela vous aidera !!


0 commentaires

0
votes

Vous devez utiliser un rappel pour voir l'état modifié, car setState est asynchrone dans React. Selon la documentation:

setState () ne modifie pas immédiatement this.state mais crée un transition d'état en attente. Accéder à this.state après avoir appelé ceci peut potentiellement renvoyer la valeur existante. Il n'y a pas garantie du fonctionnement synchrone des appels vers setState et les appels peuvent être groupé pour des gains de performances.

 handleClick = () => {
    this.setState({ page: this.state.page + 1 }, () => {
    console.log(this.state.page)
    })
 }


0 commentaires