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

监听对象属性

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

vue实现watch

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

深度监听

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

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

立即触发

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

vue实现watch

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()

注意事项

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

标签: vuewatch
分享给朋友:

相关文章

vue实现分支

vue实现分支

Vue 实现分支的方法 在 Vue 项目中实现分支功能通常涉及条件渲染、动态组件或路由控制。以下是几种常见的实现方式: 条件渲染(v-if/v-show) 使用 Vue 的指令根据条件显示不同内容:…

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例: &…

vue实现图片分析

vue实现图片分析

Vue 实现图片分析的方法 在 Vue 中实现图片分析通常涉及图片上传、预览、后端交互以及分析结果展示等功能。以下是几种常见的实现方式: 使用 HTML5 File API 和 Canvas 进行…

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用…