Vue2知识积累

Vue2知识积累

这里是我的个人在工作中或学习中遇到的bug或知识点积累

this.$set / Vue.set

使用方法:

	this.$set / Vue.set(往哪里添加,“添加后的字段名”,需要添加的内容)

例如:

const a = [],
xxxxxx.(xxx).then((res)=>{
	if(res.code ==0){
	this.$set(a,'a',res.date)
	Vue.set(a,'a',res.date)
	}
})

使用场景

当需要往一个数组里进项添加数据,并且还可以改变,双向绑定的时候,可以调用这个方法

看看ChatGPT怎么说:

Vue.set 是 Vue.js 中的一个全局方法,用于在特定对象上添加响应式属性。这个方法主要用于解决在使用 Vue 时,直接添加新属性到对象上可能导致该属性不具备响应式的问题。

Vue.js在实例化时会对 data 对象进行响应式处理,但是如果你在实例化之后,直接添加一个新的属性到 data 中,Vue.js 无法自动检测到这个变化,因为它在初始化时已经完成了对 data 的响应式处理。

这时候,你可以使用 Vue.set 来手动触发对象的响应式更新。Vue.set 接受三个参数,分别是目标对象、要添加的属性名、以及属性值。

以下是一个简单的例子,演示了在 Vue 实例中如何使用 Vue.set

<template>
  <div>
    <p>{{ user.name }}</p>
    <p>{{ user.age }}</p>
    <button @click="updateUser">Update User</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
        name: 'John',
      },
    };
  },
  methods: {
    updateUser() {
      // 直接添加新属性,不会触发响应式更新
      // this.user.age = 25;

      // 使用 Vue.set 添加属性,触发响应式更新
      this.$set(this.user, 'age', 25);
    },
  },
};
</script>

在上面的例子中,如果直接将 age 属性添加到 user 对象中,Vue.js 将无法检测到这个变化。但是,通过使用 Vue.set,我们手动告诉 Vue.js 在 user 对象上添加了一个新的属性,这样就会触发响应式更新,视图会正确地显示新的属性值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值