Vue中给data中的对象属性添加一个新的属性时会发生什么,如何解决?

Vue中给data中的对象属性添加一个新的属性时会发生什么,如何解决?,第1张

示例:

点击button会发现, obj.b 已经成功添加,但是视图并未刷新:

原因在于在Vue实例创建时, obj.b 并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新,这时就需要使用Vue的全局api—— $set():

$set() 方法相当于手动的去把 obj.b 处理成一个响应式的属性,此时视图也会跟着改变了:

在开发过程中,经常遇到这样的情况:当data里边已经声明或赋值过对象或者数组(数组里边的值是对象)时,再向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。

根据官方文档定义: 如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

vue.$set(obj,key,value)

举例:

有这样一个场景: v-for 渲染一个列表有10个子项,并且把第5个子项后的元素都添加一个属性 data-wow-delay='0.8s' ,实现如下:

可以得出一个给元素添加自定义属性的方法

当然,如果只是添加一个常见属性(css属性),例如class,style等,下面这种方法也可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11516426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存