2017-12-02 64 views
1

我有以下功能:爲什麼鍵值對被添加兩次到狀態?

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}); 

} 

我意識到ourItems是不是真的想在做什麼,但爲什麼當加入被添加的鍵值對那些三線兩次,狀態呢?

回答

1

JavaScript中只有原語通過值傳遞。其他一切都通過參考傳遞。 通過設置ourItems = allItems[key],可以將ourItems變量指向allItems[key]陣列。它不會複製數組。因爲你實際上將對象兩次推入同一個數組中。

+0

你能以這種方式設置狀態嗎? – DCR

相關問題