2017-03-05 98 views
0

我正在使用以下代碼將新對象插入到數組'項目'中。但問題是當我插入一個新的對象時,它會替換之前添加的對象的內容。以這種方式,即使添加的對象不同,始終包含相同的對象。添加新對象替換舊對象的內容 - VueJS Store

我聽說這是由於使用'推',也通過參考。我怎樣才能解決這個問題是VueJS

Store.js

var store = new Vuex.Store({ 
    state: { 
    value: 1, 
    quote: { 
     items: [], 
     something: '' 
    } 
    }, 
    mutations: { 
    ADD (state, item) { 
     state.quote.items.push(item) 
    } 
    } 
}) 

回答

0

終於自己得到了答案。該解決方案是「字符串化的對象,並解析它回來,無論使用JSON」

mutations: { 
    ADD (state, item) { 
     item = JSON.stringify(item) 
     item = JSON.parse(item) 
     state.quote.items.push(item) 
    } 
    } 
+0

使用'Object.assign',因爲我在我的答案中添加了。 – Saurabh

1

改用spread operator

mutations: { 
    ADD (state, item) { 
    state.quote.items = [...state.quote.items, Object.assign({}, item)] 
    } 
} 

散佈操作是不需要的,你可以做:

mutations: { 
    ADD (state, item) { 
    state.quote.items.push(Object.assign({}, item)) 
    } 
} 
+0

不,它不工作 –

+0

@GijoVarghese可能創造該問題的小提琴。 – Saurabh

+0

@GijoVarghese全部在你提交這個變異的地方添加代碼,也許你只是通過改變它的隊列來推動同一個項目。我會更新我的答案來處理這種情況。 – Saurabh