添加新对象会替换旧对象的内容 - VueJS Store

时间:2017-03-05 17:10:11

标签: javascript vuejs2 vue.js

我正在使用以下代码将新对象插入数组'items'。但问题是当我插入一个新对象时,它会替换之前添加的对象的内容。通过这种方式,即使添加的对象不同,也始终包含相同的对象。

我听说这是因为使用'push'也传递了参考。我怎么解决这个问题是VueJS

Store.js

FROM java:9

2 个答案:

答案 0 :(得分:2)

改为使用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))
  }
}

答案 1 :(得分:0)

终于得到了答案。解决方案是'使用JSON'

对对象进行字符串化并将其解析回来
  mutations: {
    ADD (state, item) {
      item = JSON.stringify(item)
      item = JSON.parse(item)
      state.quote.items.push(item)
    }
  }