当前位置:首页 > VUE

vue实现watch

2026-01-08 01:58:05VUE

监听数据变化

在Vue中,watch用于监听响应式数据的变化并执行回调函数。基本语法如下:

watch: {
  propertyName(newValue, oldValue) {
    // 处理逻辑
  }
}

监听对象属性

如果需要监听对象的某个属性变化,可以使用点语法或字符串形式:

watch: {
  'obj.property'(newVal) {
    console.log('属性变化:', newVal)
  }
}

深度监听对象

当需要监听对象内部所有嵌套属性变化时,启用deep选项:

vue实现watch

watch: {
  obj: {
    handler(newVal) {
      // 处理逻辑
    },
    deep: true
  }
}

立即触发回调

设置immediate: true会在组件创建时立即执行一次回调:

watch: {
  value: {
    handler(newVal) {
      // 初始化执行
    },
    immediate: true
  }
}

监听数组变化

Vue默认无法检测数组元素赋值变化,需要特殊处理:

vue实现watch

watch: {
  arr: {
    handler(newVal) {
      // 处理数组变化
    },
    deep: true
  }
}

组合式API写法

在Vue3的setup语法中,使用watch函数:

import { watch, ref } from 'vue'

const count = ref(0)
watch(count, (newVal, oldVal) => {
  console.log('count变化:', newVal)
})

监听多个数据源

可以同时监听多个响应式数据:

watch([ref1, ref2], ([new1, new2], [old1, old2]) => {
  // 处理多个值变化
})

停止监听

组合式API中watch返回停止函数:

const stop = watch(data, callback)
// 需要时调用停止
stop()

性能优化建议

对于复杂计算或频繁变化的数据,考虑使用watchEffect或计算属性替代,避免不必要的深度监听消耗性能。

标签: vuewatch
分享给朋友:

相关文章

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-c…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$rout…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…