Vue中的Vue.set和this.$set怎么使用

发布时间:2022-03-05 10:59:46 作者:iii
来源:亿速云 阅读:202

Vue中的Vue.set和this.$set怎么使用

在Vue.js中,Vue.setthis.$set是用于在响应式对象上动态添加新属性的方法。由于Vue的响应式系统在初始化时会对数据进行劫持,因此直接通过obj.newProperty = value的方式添加新属性时,Vue无法检测到变化,从而导致视图不会更新。为了解决这个问题,Vue提供了Vue.setthis.$set方法。

1. Vue.set

Vue.set是一个全局方法,用于在响应式对象上添加一个新属性,并确保这个新属性是响应式的。它的语法如下:

Vue.set(target, key, value)

示例

<template>
  <div>
    <p>{{ user.name }}</p>
    <p>{{ user.age }}</p>
    <button @click="addAge">Add Age</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
        name: 'Alice'
      }
    };
  },
  methods: {
    addAge() {
      Vue.set(this.user, 'age', 25);
    }
  }
};
</script>

在这个示例中,user对象初始时只有name属性。当点击按钮时,通过Vue.set方法动态添加了age属性,并且这个新属性是响应式的,视图会自动更新。

2. this.$set

this.$setVue.set的实例方法,它的作用与Vue.set完全相同,只是调用方式不同。this.$set通常在Vue组件内部使用,语法如下:

this.$set(target, key, value)

示例

<template>
  <div>
    <p>{{ user.name }}</p>
    <p>{{ user.age }}</p>
    <button @click="addAge">Add Age</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
        name: 'Alice'
      }
    };
  },
  methods: {
    addAge() {
      this.$set(this.user, 'age', 25);
    }
  }
};
</script>

在这个示例中,this.$set方法与Vue.set方法的效果相同,都是在user对象上动态添加age属性,并确保它是响应式的。

3. 使用场景

Vue.setthis.$set主要用于以下场景:

数组操作示例

<template>
  <div>
    <ul>
      <li v-for="(item, index) in items" :key="index">{{ item }}</li>
    </ul>
    <button @click="updateItem">Update Item</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['Apple', 'Banana', 'Cherry']
    };
  },
  methods: {
    updateItem() {
      this.$set(this.items, 1, 'Blueberry');
    }
  }
};
</script>

在这个示例中,点击按钮后,items数组的第二个元素会被更新为'Blueberry',并且视图会自动更新。

4. 总结

Vue.setthis.$set是Vue.js中用于动态添加响应式属性的重要方法。它们确保了在运行时添加的属性能够被Vue的响应式系统追踪,从而触发视图的更新。在实际开发中,当你需要动态修改对象或数组时,记得使用Vue.setthis.$set来确保数据的响应性。

推荐阅读:
  1. vue-cli学习——Vue.set()
  2. this.$set怎么在vue中使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue vue.set this.$set

上一篇:ajaxStop()注意事项有哪些

下一篇:ajaxError()有什么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》