2017-12-02 4 views
1

Ich habe die folgende Funktion:Warum werden Schlüsselwertpaare zweimal zum Status hinzugefügt?

handleAddItem(s) { 

    var key = Object.keys(s)[0]; 
    var value = s[key]; 

    var allItems = {...this.state.items};  

     allItems[key] = allItems[key]; 
     allItems[key].push({name: value}); 


    var ourItems = {}; 
     ourItems = allItems[key]; 
     ourItems.push({name: value });   


    this.setState({items: allItems}); 

} 

Ich weiß, dass ourItems ist alles nicht wirklich wohl zu tun, aber warum, wenn diese drei Zeilen zweimal angeben hinzugefügt werden, um die Schlüssel-Wert-Paare hinzugefügt?

Antwort

1

Nur Grundelemente in JavaScript werden als Wert übergeben. Alles andere wird als Referenz weitergegeben. Indem Sie ourItems = allItems[key] setzen, machen Sie den ourItems Variablenpunkt zum allItems[key] Array. Es kopiert das Array nicht. Aus diesem Grund schieben Sie das Objekt zweimal in dasselbe Array.

+0

können Sie diesen Zustand einstellen? – DCR

Verwandte Themen