当前位置:首页 > 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 返回停止函数,可在需要时取消监听:

vue实现watch

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

注意事项

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

标签: vuewatch
分享给朋友:

相关文章

vue实现多选题

vue实现多选题

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

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click=…

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现报表

vue实现报表

vue实现报表的方法 使用Vue实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echart…

vue实现setinterval

vue实现setinterval

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

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…