当前位置:首页 > VUE

vue对象监听如何实现

2026-01-21 09:34:39VUE

Vue 对象监听实现方法

Vue 提供了多种方式监听对象的变化,以下是常见的实现方法:

使用 watch 选项

在 Vue 实例中通过 watch 选项监听对象变化:

new Vue({
  data() {
    return {
      user: {
        name: 'John',
        age: 30
      }
    }
  },
  watch: {
    'user.name'(newVal, oldVal) {
      console.log(`Name changed from ${oldVal} to ${newVal}`)
    },
    user: {
      handler(newVal, oldVal) {
        console.log('User object changed', newVal)
      },
      deep: true // 深度监听
    }
  }
})

使用 $watch API

在组件内动态添加监听器:

export default {
  mounted() {
    this.$watch(
      'user.name',
      (newVal, oldVal) => {
        console.log(`Name changed from ${oldVal} to ${newVal}`)
      }
    )

    this.$watch(
      () => this.user,
      (newVal, oldVal) => {
        console.log('User object changed', newVal)
      },
      { deep: true }
    )
  }
}

使用计算属性

通过计算属性间接监听对象属性:

export default {
  data() {
    return {
      user: {
        name: 'John',
        age: 30
      }
    }
  },
  computed: {
    userName() {
      return this.user.name
    }
  },
  watch: {
    userName(newVal, oldVal) {
      console.log(`Name changed from ${oldVal} to ${newVal}`)
    }
  }
}

使用 Vue.set 或 this.$set

对于新增属性,需要使用特殊方法使其响应式:

this.$set(this.user, 'newProperty', 'value')
// 等同于
Vue.set(this.user, 'newProperty', 'value')

使用 Vue.observable

创建可观察对象(Vue 2.6+):

const state = Vue.observable({
  count: 0
})

// 在组件中使用
export default {
  computed: {
    count() {
      return state.count
    }
  }
}

注意事项

  • 深度监听 (deep: true) 会遍历对象所有属性,可能影响性能
  • 数组变化需要特殊处理,推荐使用数组变更方法 (push/pop/shift/unshift/splice/sort/reverse)
  • 对象属性添加/删除需要使用 Vue.set/Vue.delete 保证响应式
  • Vue 3 中使用 reactiveref 替代 Vue 2 的响应式系统

vue对象监听如何实现

分享给朋友:

相关文章

vue如何实现原理

vue如何实现原理

Vue 的核心实现原理 Vue 的核心原理主要包括响应式系统、虚拟 DOM、模板编译和组件化。以下分模块详细说明其实现机制。 响应式系统 Vue 2.x 使用 Object.definePrope…

vue如何实现计算

vue如何实现计算

Vue 实现计算的方法 Vue 提供了多种方式来实现计算逻辑,包括计算属性、方法、侦听器等。以下是几种常见的实现方式: 计算属性(Computed Properties) 计算属性是基于它们的响应式…

vue如何实现记住我

vue如何实现记住我

实现“记住我”功能的步骤 在Vue中实现“记住我”功能通常涉及前端保存用户登录状态(如token)到本地存储,并在下次访问时自动恢复登录状态。以下是具体实现方法: 使用localStorage或co…

vue如何实现默认页面

vue如何实现默认页面

Vue 实现默认页面的方法 在 Vue 项目中,通常需要设置一个默认页面(如首页或登录页)作为用户访问时的初始页面。可以通过路由配置实现。 配置路由默认跳转 在 Vue Router 中,使用 re…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

如何实现vue

如何实现vue

安装 Vue.js 使用 npm 或 yarn 安装 Vue.js。确保已安装 Node.js 环境。 npm install vue # 或 yarn add vue 创建 Vue 实例 在 H…