2017-03-20 3 views
1

Ich frage mich, was ist der beste Weg, um einen Zustand einer Komponente in React/React-Native teilweise zu aktualisieren. Anders als die Tatsache, dass ich eine Funktion machen kann, die den aktuellen Zustand annimmt und einen neuen Zustand erstellt und den neuen {key: value} und den vorherigen Zustand zusammenführt. Beispiel:Wie können wir einen Zustand in Reaktion teilweise aktualisieren?

{ 
     dataStream:[//having data here], 
     formData: { 
     'first_name': 'Richard', 
     'last_name' : 'Barbieri', 
     } 
} 

Ich möchte last_name auf einen anderen Wert aktualisieren. Wenn ich this.setState(formData:{{'last_name':newValue}}) rufe, setzt es das formData-Wörterbuch auf nur Nachname zurück: neuer Wert. Gibt es einen effizienten Weg dazu?

Antwort

2

Ich denke, es gibt zwei Dinge, die Sie könnten versuchen:

  1. Spread-Betreiber:

this.setState({formData: {...this.state.formData, "last_name" : newValue } });

oder

  1. Nimm aktuellen states Vorname und erneut anwenden:

this.setState({ formData: { "first_name": this.state.formData.first_name, "last_name" : newValue } })

Ich bin nicht sicher, ob die erste, aber ich denke, die zweite sollte funktionieren.

+1

Spread-Betreiber sollte zuerst gehen hinzufügen möchten. Ihr Code überschreibt den 'newValue' mit dem Original. –

+0

Vielen Dank für die Antwort! Ja, ich hatte die zweite Lösung gemacht und es funktioniert. Ich war mir nicht sicher, ob das der richtige Weg war. Aber das geht auch! –

+0

@MartinMazzaDawson Vielen Dank für die Köpfe –

1

Was passiert, ist normal, weil Sie das ganze forData neu zuweisen.

Wenn Sie etwas zu den bestehenden Formulardaten so etwas tun (es gibt viele andere Lösungen ^^)

this.setState({ 
    formData: Object.assign(this.state.formData, { 'last_name': newValue } 
}) 
Verwandte Themen