vue 使用this.$set添加更改新属性的问题

在Vue中使用this.$set修改对象属性时,如果属性值是数组,原数组会受到影响。当修改新属性(newtags)导致原数组(product.tag)改变。原因是Vue的响应式原理。解决方法包括:1.为空数组重新赋值;2.使用JSON序列化避免引用。这两种方式可以防止原数组被意外修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用到this.$set 给某个对象的属性值赋值的时候,大多格式为this.$set( target, key, value )。

但若value为该对象的原属性数组,如:

 this_.getProductListTable.productList.forEach((item, i) => {
                this_.$set(item, 'index', i);
                this_.$set(item, 'newtags', item.product.tag);
               })
               
//product.tag里面的值为数组

那么之后更改该对象的新属性值(newtags.push(xxxxxx))时,原数组(item.product.tag)会随之改变。

原因可能为this方法中指向的是同一块数据域,

解决方法:1.如果改为value为空再重新进行赋值处理,如

this_.$set(item, 'newMetas', []);

2.或者将value转换为json格式在转出,如:

this_.$set(item, 'newTags', JSON.parse(JSON.stringify(item.product.tag)));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值