当前位置:首页 > VUE

vue实现watch

2026-01-13 06:44:02VUE

在 Vue 中实现 watch 的方法

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

基本用法

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

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(newVal, oldVal) {
      console.log('消息变化:', oldVal, '->', newVal)
    }
  }
}

监听对象属性

使用点语法或字符串路径监听嵌套属性:

watch: {
  'user.name'(newVal) {
    console.log('用户名变化:', newVal)
  }
}

深度监听

添加 deep: true 监听对象内部所有属性变化:

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

立即触发

设置 immediate: true 使回调在监听开始时立即执行:

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

组合式 API 用法

setup() 中使用 watch 函数:

import { ref, watch } from 'vue'

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

    watch(count, (newVal, oldVal) => {
      console.log('计数变化:', oldVal, '->', newVal)
    })

    return { count }
  }
}

监听多个源

传入数组同时监听多个响应式数据:

watch([foo, bar], ([newFoo, newBar], [oldFoo, oldBar]) => {
  console.log('foo或bar变化:', newFoo, newBar)
})

停止监听

watch 返回停止函数,可在需要时取消监听:

const stop = watch(source, callback)
// 调用停止函数
stop()

注意事项

  • 避免在监听器中修改被监听的数据,可能导致无限循环
  • 深度监听对性能影响较大,应仅在必要时使用
  • 对于复杂逻辑,考虑使用计算属性替代监听器

vue实现watch

标签: vuewatch
分享给朋友:

相关文章

vue实现图片搜索

vue实现图片搜索

Vue实现图片搜索功能 使用HTML5的File API获取图片 通过<input type="file">元素让用户选择图片文件,使用FileReader对象读取图片数据。 <t…

vue实现屏幕共享

vue实现屏幕共享

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

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue.js…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Rout…