解决使用$set,视图还是不能更新的问题

Object.assign
Object.assign可以用于js对象浅复制。语法:Object.assign(target, source1, source2);
第一个参数为目标对象,后面的为要合并的对象(源对象)。

let obj={
a:2,
b:4
}
Object.assign({}, obj, {c:6}); // 将{c:6}与obj合并  返回{a:2,b:4,c:6}

当属性名相同时,新增的会覆盖原来的属性
Object.assign只会拷贝对象本身的属性,不拷贝继承属性,不拷贝不可枚举对象。

当项目中遇到vue视图不及时刷新的问题,使用Object.assign重新创建一个对象,给视图对象重新赋值,可以解决vue中视图不及时刷新的问题。

本人项目案例:

skuConfirm(sku) {
      this.changeSku = sku;

      this.list.forEach(x => {
        if (x.salesOrderDetailId == this.cursor) {
          x.outProductId = sku.productId;
          x.outProductName = sku.productName;
          x.outProductCode = sku.productCode;
          x.outSkuId = sku.skuId;
          x.outSkuCode = sku.skuCode;
          x.outSkuName = sku.skuName;
          this.$forceUpdate();
        }
      });
      this.list = Object.assign([], this.list, this.list);
    }
posted @ 2021-05-28 18:17  Posion゜  阅读(463)  评论(0编辑  收藏  举报