2017-05-09 6 views
0

Ich möchte den Wert eines Schlüssels in einem Array mit dem Immutability-Helfer-Addon aktualisieren.Aktualisiere Array-Indexwert als Objekt

mein Code sieht wie folgt aus:

class StorageForm extends Component { 
    constructor(props) { 
    super(props); 

    this.state = { 
     volumes: [{local: 'test', remote: 'test2'}], 
    }; 
    }; 

    _handleLocalPathData(event, index) { 
    const path = event.target.value; 
    const data = this.state.volumes[index]; 
    data.local = path; 

    const tmpData = update(this.state.volumes[index], {$set: [data]}); 

    this.setState({ 
     volumes: tmpData 
    }); 
}; 
} 

aber Bände sind nicht die aktualisierte ein. Wo ist mein Fehler?

Antwort

2

Sie wollen local Eigenschaft des Objekts setzen in Array an index Position:

const newVolumes = update(this.state.volumes, { 
    [index]: { local: { $set: path }, 
}; 
this.setState({ volumes: newVolumes }); 
+0

gut, habe ich versucht, das schon, aber für [ index] Ich habe this.state.volumes [index] verwendet. Ich werde es später versuchen. – Evolutio

0

Lassen Sie _handleLocalPathData die tmpData zurückgeben und rufen Sie innerhalb der Klasse die Funktion auf und verwenden Sie this.setState ({volumes: tmpData}). warum, weil der Kontext dieser ist nicht auf die StorageForm Klasse beziehe

Verwandte Themen