当前位置:  首页>> 技术小册>> Vue面试指南

在Vue中,当我们给一个已经存在的对象添加新属性时,如果这个对象已经被Vue所响应式监测,那么这个新属性将不会自动触发界面的重新渲染,因为Vue无法检测到对象属性的添加或删除。这时需要通过Vue提供的Vue.set()或this.$set()方法来手动触发界面的重新渲染。

Vue.set()和this.$set()方法的用法相同,它们的第一个参数是要操作的对象,第二个参数是要添加的属性名,第三个参数是要添加的属性值。

下面是一个给对象添加新属性的示例代码:

  1. <template>
  2. <div>
  3. <p>{{ message.name }}</p>
  4. <button @click="changeName">Change Name</button>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. message: { age: 20 }
  12. }
  13. },
  14. methods: {
  15. changeName() {
  16. // 直接添加属性,界面不会刷新
  17. this.message.name = 'Tom'
  18. // 使用Vue.set()方法添加属性,界面会刷新
  19. Vue.set(this.message, 'name', 'Tom')
  20. // 或者使用this.$set()方法
  21. this.$set(this.message, 'name', 'Tom')
  22. }
  23. }
  24. }
  25. </script>

在这个示例中,我们在message对象中添加了一个新的name属性,并使用Vue.set()或this.$set()方法来触发界面的重新渲染,这样界面上的数据就会及时更新。


该分类下的相关小册推荐: