4.Vue-------this.$set()的使用和详细过程-------vue知识积累

发布于:2024-12-06 ⋅ 阅读:(21) ⋅ 点赞:(0)

在Vue.js中,this.$set()是Vue实例this.someProperty = someValue来为Vue实例的属性赋值时,Vue会自动将该属性设置为响应式的,这样当属性的值变化时,相关的视图会自动更新

一. 对象的修改

对象:修改和新增


先定义数据对象:
obj: { name: "小明", age: 18, },        
 
基本语法:
this.$set(需要改变的对象,"需要改变的对象属性""新值")

a.对象修改

this.$set(this.obj, "name", "小刘"); 
 
控制台输出:obj: { name: "小刘", age: 18, },

b.对象新增

this.$set(this.obj, "hobby", "study");
 
控制台输出:obj: { name: "小明", age: 18, hobby: "study"},  

c.对象新增未知属性(这里的item是传递的参数,不带引号,"reading"是参数值)

this.$set(this.obj, item, "reading");

二. 数组

先定义数组包对象:
arr: [                                           
  { name: "小王", age: 18 },
  { name: "小张", age: 20 },
 ],
 
定义普通数组:       
twoArr: [11, 22, 33, ],                          
 
基本语法:
this.$set(需要修改的数组,需要修改的数组下标,{ "要修改的数组对象,一个/多个" })

a.数组修改

 修改数组对象:
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, ],   

b. 数组新增

(1)首先需要获取新增的数组长度

let reslg = this.arr.length;  

(2)然后添加在数组末尾

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,某个属性已经被删除,从而触发视图的更新。


网站公告

今日签到

点亮在社区的每一天
去签到