当前位置:首页 > 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+):

vue对象监听如何实现

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 中实现图表可以通过多种方式,常见的有使用第三方库或自定义实现。以下是几种常见的方法: 使用 ECharts ECharts 是一个功能强大的图表库,支持多种图表类型。…

vue如何实现刷新

vue如何实现刷新

实现页面刷新的方法 在Vue中实现刷新功能可以通过以下几种方式实现: 使用location.reload() 直接调用浏览器的原生方法强制刷新整个页面: methods: { refreshP…

vue如何实现绑定

vue如何实现绑定

数据绑定基础 Vue 通过 v-bind 指令实现动态绑定 HTML 属性或组件 prop。基本语法为 v-bind:属性名="表达式",简写为 :属性名="表达式"。例如绑定 class 或 sty…

VUE如何实现长按

VUE如何实现长按

VUE 实现长按功能的方法 在Vue中实现长按功能可以通过监听触摸或鼠标事件来实现。以下是几种常见的方法: 方法一:使用原生事件监听 通过监听 touchstart 和 touchend 或 mo…

vue权限如何实现

vue权限如何实现

Vue 权限实现方案 在 Vue 项目中实现权限控制通常涉及路由权限、按钮权限和接口权限三个方面。以下是具体实现方法: 路由权限控制 路由权限通常通过动态路由和全局路由守卫实现。用户登录后获取权限列…

问卷vue如何实现

问卷vue如何实现

在Vue中实现问卷功能 使用Vue框架可以高效地构建动态问卷系统,主要依赖组件化开发和响应式数据绑定。以下是具体实现方法: 基础结构搭建 创建Vue项目后,设计问卷的数据结构。通常使用一个数组存储问…