2017-05-12 2 views
0

J'ai des objets imbriqués dans l'état, où je devrais mettre à jour les données avec la clé dynamique et la valeur. pour lequel j'ai utilisé les aides d'immutabilité de React opération.réagit setState ne fonctionne pas correctement

mon exemple de code:

var update = require('react-addons-update'); 

var myState = update(this.state, { 
    data: {[dynamic_keys]: {$set: dynamic_values}} 
}); 

this.setState(myState); 

problème est l'état setState pas la mise à jour à la fois, en cliquer deux fois il est l'état mise à jour, mais pas dans un .. quelle est la meilleure façon de traiter ce problème ?? ou y at-il d'autres astuces pour setState en réaction ??

+1

Cette question n'est pas particulièrement claire. Il pourrait être plus utile si vous pouviez décrire ce que vous espérez accomplir et fournir plus de votre code (par exemple, il n'est pas clair dans quelle fonction ce code est exécuté). –

+0

@DaveDraper mon code est exécuté sur l'entrée onChanged, mon souci principal ou mon insatisfaction est pourquoi cette réaction setState n'affiche pas immédiatement les changements d'état. –

+1

Avez-vous défini des points d'arrêt dans votre code pour vérifier que l'appel à setState est en cours d'exécution au premier clic? S'il s'agit d'un gestionnaire d'événement onChanged sur un élément d'entrée, êtes-vous sûr que cet événement est réellement déclenché (quel type avez-vous attribué à l'élément d'entrée?) –

Répondre

0

Tout d'abord, "setState()" ne fonctionne pas de manière synchrone. Il faudra un peu de temps pour définir l'état même après son exécution car c'est une fonction asynchrone. La meilleure solution que j'utiliserai en utilisant le deuxième paramètre de setState. Voici un exemple d'exemple.

stateFunction(data){ 
    this.setState({ 
     data 
     }, 
     () => {console.log(this.state.data) 
    }) 
}