H5W3
当前位置:H5W3 > 其他技术问题 > 正文

this.$set(target, key, value)问题

    this.$set(this.tableDataEnd[index], 'insuCopy', this.form.insuCopy);
    this.$set(this.tableDataEnd[index], 'copyStart', this.form.copyStart);
    this.$set(this.tableDataEnd[index], 'copyEnd', this.form.copyEnd);

这三行代码可以简写吗(目的刷新数组中这三个键值对的值)
不能这样写,因为这个数组中有其他键值对,这样就把其他都清空只留了这三个

this.$set(this.tableDataEnd[index],index,{copyEnd:this.form.copyEnd,copyStart:this.form.copyStart,copyEnd:this.form.copyEnd});

回答:

const {insuCopy, copyStart, copyEnd} = this.form;
const item = this.tableDataEnd[index];
this.tableDataEnd.splice(index, 1, {...item, insuCopy, copyStart, copyEnd});

通过数组方法更新数组,可以触发视图更新.

$set少用为好,能提前声明的提前声明好

还可以利用map方法

const {insuCopy, copyStart, copyEnd} = this.form;
this.tableDataEnd = this.tableDataEnd.map((it, i) => 
    index === i 
    ? {...it, insuCopy, copyStart, copyEnd}
    : it
)

回答:

利用 Object.assign 替换部分字段的值。

this.$set(
  this.tableDataEnd, 
  index, 
  Object.assign(this.tableDataEnd[index], {
      copyEnd: this.form.copyEnd,
      copyStart: this.form.copyStart,
      copyEnd: this.form.copyEnd
  }
);

本文地址:H5W3 » this.$set(target, key, value)问题

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址