将对象推入数组并使其不可变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将对象推入数组并使其不可变相关的知识,希望对你有一定的参考价值。

我对Vue / Java相当陌生,所以这可能是一个非常简单的答案。我有一个打开模式的组件,您可以在其中选择要添加到订单的产品。问题是,当我修改价格时,我重新打开了重置所有价格的模式。

如何修改pickProduct功能,以便在重新打开模态时更改仍然存在?

Codepen

new Vue({
  el: '#app',
  data: () => ({
    orderForm: {
      lines: []
    },
    defaultLine: {
      product: null,
      price: ''
    }
  }),
  methods: {
    pickProduct(product) {
      const emptyLine = Object.assign({}, this.defaultLine)
      const newProduct = Object.assign({}, product)
      Object.assign(emptyLine, newProduct)
      newProduct.product = newProduct.id

      // this.orderForm.lines.push(newProduct)
      this.orderForm.lines = [...this.orderForm.lines, newProduct]
    }
  }
})
答案

您在价格输入中使用:value,实际上并不会更改您正在编辑的对象的值。因此,这与不变性无关。要实际绑定对象的值,请使用v-model代替value。

因此更改此:

<input type="text" :value="item.price" />

to

<input type="text" v-model="item.price" />

CODEPEN

以上是关于将对象推入数组并使其不可变的主要内容,如果未能解决你的问题,请参考以下文章

Javascript将对象推入数组

在片段中调用 getActivity() 以使其不返回 null 的最佳做法是啥? [复制]

如何将对象推入数组?

将对象推入数组

如何将列表数组合并到单列中并使其适合现有的数据框?

将对象推入数组不适用于模态角度js