当前位置:首页 > 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 选项:

vue实现watch

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 函数:

vue实现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 替代方案

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

import { watchEffect } from 'vue'

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

注意事项

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

标签: vuewatch
分享给朋友:

相关文章

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现注销

vue实现注销

实现用户注销功能 在Vue应用中实现用户注销功能通常涉及清除用户会话、重置应用状态并跳转到登录页面。以下是具体实现方法: 清除用户认证信息 使用Vuex或Pinia管理用户状态时,需在注销时重置存储…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue watch实现

vue watch实现

在 Vue 中实现 watch 监听数据变化 Vue 的 watch 选项用于监听数据变化并执行相应的回调函数。以下是几种常见的实现方式: 基础用法 export default { data(…