当前位置:首页 > VUE

vue watch实现

2026-02-10 12:31:06VUE

vue watch 的实现方法

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

基本用法

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

export default {
  data() {
    return {
      count: 0
    }
  },
  watch: {
    count(newVal, oldVal) {
      console.log(`count 从 ${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: {
  count: {
    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(`count 变化: ${oldVal} -> ${newVal}`)
    })

    return { count }
  }
}

监听多个数据源

传入数组同时监听多个值:

watch(
  [count, user],
  ([newCount, newUser], [oldCount, oldUser]) => {
    console.log('多个值发生变化')
  }
)

停止监听

调用 watch 返回的函数可停止监听:

const stop = watch(count, callback)
stop() // 停止监听

这些方法覆盖了 Vue 2 和 Vue 3 中 watch 的主要使用场景,可以根据具体需求选择适合的实现方式。

标签: vuewatch
分享给朋友:

相关文章

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现拖动

vue实现拖动

Vue实现拖动的常用方法 在Vue中实现拖动功能通常需要结合HTML5的拖放API或第三方库。以下是几种常见实现方式: 使用HTML5原生拖放API HTML5提供了原生拖放API,可以通过drag…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue nexttick实现

vue nexttick实现

Vue 中 nextTick 的实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它的核心实现依赖于 JavaScript 的事件循环机制。 基本…

实现vue message

实现vue message

实现 Vue 消息提示组件 创建 Message 组件 在 src/components 目录下创建 Message.vue 文件,内容如下: <template> <tran…

vue实现登录拦截

vue实现登录拦截

实现登录拦截的方法 在Vue项目中,可以通过路由守卫(Navigation Guards)实现登录拦截,确保未登录用户无法访问受保护的路由。以下是具体实现方式: 使用全局前置守卫 在路由配置文件中(…