Vue 6 ,Vue中的this.$set()使用教学,详细过程(Vue项目中this.$set()的妙用)

本文详细介绍了Vue.js中的this.$set()和this.$delete()方法,用于在响应式对象和数组中添加、修改和删除属性,确保视图的自动更新。讲解了在对象和数组操作中的具体应用,以及注意事项,帮助开发者更好地理解Vue的响应式原理。

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

目录

前言
在Vue.js中,this.$set()是Vue实例this.someProperty = someValue来为Vue实例的属性赋值时,Vue会自动将该属性设置为响应式的,这样当属性的值变化时,相关的视图会自动更新。
一. 对象
1. 对象修改
2. 对象新增
3. 对象新增未知属性(这里的item是传递的参数,不带引号,"reading"是参数值)
二. 数组
1. 数组修改
2. 数组新增
(1)首先需要获取新增的数组长度
(2)然后添加在数组末尾
三. this.$delete
四. 注意事项
五. 本章总结


前言

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

一. 对象

对象,修改和新增

定义数据对象:
obj: { name: "小明", age: 18, },        

基本语法:
this.$set(需要改变的对象,"需要改变的对象属性","新值")

1. 对象修改

this.$set(this.obj, "name", "小刘"); 

控制台输出:obj: { name: "小刘", age: 18, },

2. 对象新增

this.$set(this.obj, "hobby", "study");

控制台输出:obj: { name: "小明", age: 18, hobby: "study"},  

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


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


二. 数组

数组,修改和新增

定义数组包对象:
arr: [                                           
  { name: "小王", age: 18 },
  { name: "小张", age: 20 },
 ],

定义普通数组:       
twoArr: [11, 22, 33, ],                          

基本语法:
this.$set(需要修改的数组,需要修改的数组下标,{ "要修改的数组对象,一个/多个" })

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, ],   

2. 数组新增

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


四. 注意事项

使用时,注意双引号("")的引用


五. 本章总结

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

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

Vue中,`this.$set`是一个实例方法,用于在响应式对象上设置新的属性或修改已有的属性,并确保这些属性也是响应式的。 通常情况下,当你在Vue实例或组件的`data`选项中声明一个属性时,Vue会将其转化为响应式属性,这意味着当属性的值发生变化时,相关的视图会自动更新。然而,对于已经创建的对象,Vue无法追踪属性的添加或修改。这时,就需要使用`this.$set`方法来达到响应式更新的效果。 使用方法如下: ```javascript this.$set(object, key, value) ``` - `object`:要添加或修改属性的对象。 - `key`:要添加或修改的属性名。 - `value`:要设置的属性值。 下面是一个示例: ```javascript var app = new Vue({ data: { myObject: {} }, mounted: function () { this.$set(this.myObject, 'name', 'John'); this.$set(this.myObject, 'age', 25); } }); ``` 在上面的示例中,我们在Vue实例中的`data`选项中定义了一个空对象`myObject`。然后,在组件的`mounted`生命周期钩子中使用`this.$set`方法向`myObject`对象添加了两个属性:`name`和`age`。由于使用了`this.$set`方法,这两个属性也会成为响应式属性。 需要注意的是,如果要修改数组的某个元素,也需要使用`this.$set`方法。Vue无法检测到通过索引修改数组元素的变化。例如: ```javascript var app = new Vue({ data: { myArray: ['a', 'b', 'c'] }, methods: { updateArray: function (index, newValue) { this.$set(this.myArray, index, newValue); } } }); ``` 在上面的示例中,我们定义了一个`updateArray`方法,用于修改`myArray`数组中指定索引的元素。通过使用`this.$set`方法,可以确保修改后的数组元素是响应式的。 希望这个解答对你有所帮助!如果你还有其他关于Vue的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城笑笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值