Vue中响应式对象和数组中添加、修改和删除属性,this.$set()确保视图的自动更新

一.语法

this.$set( target, key, value )
// target:要更改的数据源(可以是对象或者数组)
// key:要更改的具体数据
// value :重新赋的值

二. 对象

对象,修改和新增

定义数据对象:
obj: { name: "小王", age: 32 },        
 
基本语法:
this.$set(需要更改的对象,"需要更改的对象属性","新值")
2.1 对象修改
this.$set(this.obj, "name", "小紫"); 
 
控制台输出:obj: { name: "小紫", age: 32 },
2.2 对象新增
this.$set(this.obj, "gender", "男");
 
控制台输出:obj: { name: "小王", age: 32, gender: "男"}
2.3 对象新增未知属性(这里的item是传递的参数,不带引号,"study"是参数值)
this.$set(this.obj, item, "study");

三. 数组

数组,修改和新增

定义数组包对象:
arr: [                                           
  { name: "小王", age: 18 },
  { name: "小张", age: 20 },
 ],
 
定义普通数组:       
twoArr: [11, 22, 33, ],                          
 
基本语法:
this.$set(需要修改的数组,需要修改的数组下标,{ "要修改的数组对象,一个/多个" })
 
3.1 数组的修改
修改数组对象:
this.$set(this.arr, 1, { name: "小王", age: 19 })
          
控制台输出:arr: [ { name: "小王", age: 18 },{ name: "小王", age: 19 }]
修改普通数组:
this.$set(this.twoArr, 0, 99);    
   
控制台输出:twoArr: [99, 22, 33]
3.2 数组新增
// 首先需要获取新增的数组长度
const reslg = this.arr.length;  

// 然后添加在数组末尾
this.$set(this.arr, reslg,{ name: "小紫", age: 18 },);
 
控制台输出:
arr: [ 
        { name: "小王", age: 18 },
        { name: "小张", age: 20 },
        { name: "小紫", age: 18 }
     ]

四. 删除(this.$delete)

执行删除操作时,对象或数组不更新时,可以使用this.$delete

基本语法:

this.$delete(this.obj, "name")

this.$delete 也是一个实例方法,用于从响应式对象中删除属性,并确保该操作也是响应式的。使用this.$delete 可以解决Vue响应式系统的另一个限制,即无法检测到通过索引直接删除数组元素的变化。通过this.$delete 方法,可以显式地告诉Vue,某个属性已经被删除,从而触发视图的更新。

五. 总结

this.$set 是Vue中的一个实例方法,用于在响应式对象上设置新的属性或修改已有的属性,并确保这些属性也是响应式的。使用this.$set 可以解决Vue响应式系统的一个限制,即无法检测到通过索引直接设置数组元素或通过Object.defineProperty添加的属性的变化,所以通过this.$set 方法,可以显式地告诉Vue,某个属性的值已经发生了变化,从而触发视图的更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值