-1
votes

Réagir les valeurs d'état JS ne met pas à jour immédiatement dans les appels de fonction suivants

constructor(props, context) {
   super(props, context);
   this.updateData=this.updateData.bid(this)        
   this.state = {
       data:{
          name:"current company",
          value:123
       }
   }
}

updateData(name, value){
   this.setState({
       data:{
         name:name,
         value:value
       }
   });
}

<button onClick={this.updateData("New Company", 890)} >Update Data</button>
How to update the state variable values.
this.setstate is not updating the values

1 commentaires

Est-ce simplement une faute de frappe? this.updatedata.bid (this) devrait-il être cela.updatedata.bind (this)?


4 Réponses :


1
votes

onclick devrait être de cette façon: xxx

car vous ne voulez pas transmettre la valeur renvoyée de this.updatedata à le onclick mais plutôt que vous souhaitez l'appeler lorsque le bouton est cliqué sur le bouton.

Il y a aussi une faute de frappe: xxx

devrait être xxx


1 commentaires

Prendre en compte la typo de la fonction de la fonction également, mais c'est ce qui cause le problème



0
votes

Changer xxx

à xxx

aussi xxx

à xxx

code complet doit être xxx


0 commentaires

0
votes

Utilisez la fonction de rappel pour mettre à jour les valeurs de variable d'état.

updateData(name, value){
     this.setState({
         data:{
     name:name,
     value:value
        }
      }, () => {
    *** Next statements ***  
    });

console.log("Updated value", this.state.data.name);
}


0 commentaires

0
votes

1: this.updatedata = this.updatedata.bind (this) s'il vous plaît épeler la liaison
2: onclick = {() => this.updatedata ("nouvelle entreprise", 890)} Ajouter une flèche Func

P>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>


0 commentaires