2017-05-12 5 views
0

Ich habe verschachtelte Objekte im Zustand, wo ich Daten mit dynamischem Schlüssel und Wert aktualisieren sollte. für die ich React die Unveränderlichkeit Helfer Betrieb verwendet haben.reagieren setState funktioniert nicht richtig

mein Beispielcode:

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

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

this.setState(myState); 

Problem ist setState Zustand nicht in einmal zu aktualisieren, in zweimal auf ich Zustand, aber nicht in einer aktualisiert .. was ist der beste Weg, um mit diesem Problem fertig zu werden ?? oder gibt es noch andere tricks um setState zu reagieren ??

+1

Diese Frage ist nicht besonders klar. Es könnte hilfreicher sein, wenn Sie beschreiben könnten, was Sie erreichen möchten, und mehr Code zur Verfügung stellen (zum Beispiel ist nicht klar, in welcher Funktion dieser Code ausgeführt wird). –

+0

@DaveDraper mein Code wird auf Eingabefeld onChanged ausgeführt, mein Hauptanliegen oder sagen Unzufriedenheit ist, warum diese reagieren setState zeigt sofort keine Änderungen im Zustand. –

+1

Haben Sie Haltepunkte in Ihrem Code zu überprüfen, dass der Aufruf von setState tatsächlich ausgeführt wird auf den ersten Klick? Wenn dies ein onChanged-Ereignishandler für ein Eingabeelement ist, dann sind Sie sicher, dass dieses Ereignis tatsächlich ausgelöst wird (welchem ​​Typ haben Sie das Eingabeelement zugewiesen?) –

Antwort

0

Zunächst funktioniert "setState()" nicht synchron. Es wird eine kleine Zeit dauern, den Zustand selbst nach seiner Ausführung einzustellen, da es sich um eine asynchrone Funktion handelt. Die beste Lösung, die ich mit dem zweiten Parameter von setState verwenden werde. Hier ist ein Beispielbeispiel.

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