当前位置:首页 > VUE

vue实现watch

2026-03-07 14:04:18VUE

Vue 的 watch 实现方法

在 Vue 中,watch 用于监听数据变化并执行相应的回调函数。以下是几种常见的实现方式:

基本用法

通过选项式 API 的 watch 属性监听数据变化:

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(newVal, oldVal) {
      console.log('Message changed from', oldVal, 'to', newVal)
    }
  }
}

立即触发和深度监听

添加 immediatedeep 选项:

watch: {
  user: {
    handler(newVal, oldVal) {
      console.log('User changed')
    },
    immediate: true,
    deep: true
  }
}

监听对象属性

使用字符串路径监听嵌套属性:

watch: {
  'user.name'(newVal) {
    console.log('Username changed to', newVal)
  }
}

组合式 API 的 watch

setup() 中使用 watch 函数:

import { ref, watch } from 'vue'

export default {
  setup() {
    const count = ref(0)

    watch(count, (newVal, oldVal) => {
      console.log('Count changed from', oldVal, 'to', newVal)
    })

    return { count }
  }
}

监听多个数据源

使用数组监听多个响应式数据:

watch(
  [count, name],
  ([newCount, newName], [oldCount, oldName]) => {
    console.log('Count or name changed')
  }
)

停止监听

watch 函数返回停止函数:

const stop = watch(count, (newVal) => {
  if (newVal > 10) {
    stop()
  }
})

watchEffect 替代方案

自动追踪依赖的响应式数据:

vue实现watch

import { watchEffect } from 'vue'

watchEffect(() => {
  console.log('Count is now:', count.value)
})

注意事项

  • 深度监听 (deep: true) 会对对象的所有属性进行递归监听,可能影响性能
  • 数组变更需要通过深度监听或使用数组方法触发
  • 对于大型对象,考虑监听特定属性而非整个对象
  • 在组件卸载前,组合式 API 的 watch 会自动停止,但也可手动停止

标签: vuewatch
分享给朋友:

相关文章

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(.…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置 使…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue实现弹幕

vue实现弹幕

Vue 实现弹幕功能 弹幕功能通常包括动态生成、滚动显示、颜色和速度随机化等特性。以下是基于 Vue 3 的实现方法。 核心思路 使用 CSS 动画控制弹幕从右向左滚动。 动态生成弹幕数据,随机设置…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…