当前位置:首页 > VUE

vue实现数据监听

2026-01-18 20:46:18VUE

Vue 数据监听实现方式

Vue 提供了多种方式实现数据监听,核心机制基于响应式系统。以下是常见方法:

响应式属性(data 和 computed) 在组件选项中定义 data 返回对象,Vue 会自动将其转为响应式:

data() {
  return {
    message: 'Hello Vue'
  }
}

计算属性 computed 会自动追踪依赖:

computed: {
  reversedMessage() {
    return this.message.split('').reverse().join('')
  }
}

watch 选项 显式监听特定数据变化:

watch: {
  message(newVal, oldVal) {
    console.log('消息变化:', oldVal, '→', newVal)
  }
}

$watch API 动态创建监听器:

created() {
  this.$watch(
    () => this.user.id,
    (newId) => {
      console.log('ID 变化:', newId)
    }
  )
}

深度监听对象 添加 deep: true 监听嵌套属性:

watch: {
  user: {
    handler(newVal) {
      console.log('用户信息变化', newVal)
    },
    deep: true
  }
}

立即触发回调 配置 immediate: true

watch: {
  value: {
    handler(val) {
      console.log('初始值:', val)
    },
    immediate: true
  }
}

原理说明

Vue 2.x 使用 Object.defineProperty 实现数据劫持,Vue 3.x 改用 Proxy。当数据变化时,会触发 setter 通知依赖更新,最终重新执行渲染函数或 watch 回调。

性能注意事项

  • 避免过度使用深度监听(deep watch)
  • 大数据量考虑手动控制监听粒度
  • 必要时使用 unwatch 取消监听

vue实现数据监听

标签: 数据vue
分享给朋友:

相关文章

vue实现屏幕共享

vue实现屏幕共享

Vue 实现屏幕共享的方法 使用 WebRTC 和 getDisplayMedia API 通过 navigator.mediaDevices.getDisplayMedia 捕获屏幕内容,结合 We…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起:…

vue实现一个系统

vue实现一个系统

Vue 系统实现步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目: npm init vue@latest my-system 选择需要的配置(Router、Pinia 等)。…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keywor…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…