当前位置:首页 > VUE

vue.js watch实现

2026-01-21 03:38:09VUE

使用 watch 监听数据变化

在 Vue.js 中,watch 用于监听响应式数据的变化,并在数据变化时执行回调函数。

基本语法

export default {
  data() {
    return {
      message: 'Hello Vue!',
      user: {
        name: 'John',
        age: 25
      }
    }
  },
  watch: {
    // 监听简单数据
    message(newVal, oldVal) {
      console.log('message changed:', newVal, oldVal);
    },
    // 监听对象属性
    'user.name'(newVal, oldVal) {
      console.log('user.name changed:', newVal, oldVal);
    }
  }
}

深度监听对象

默认情况下,watch 不会监听对象内部属性的变化。如果需要深度监听,可以使用 deep: true

watch: {
  user: {
    handler(newVal, oldVal) {
      console.log('user changed:', newVal, oldVal);
    },
    deep: true
  }
}

立即执行回调

immediate: true 可以让 watch 在组件初始化时立即执行一次回调。

watch: {
  message: {
    handler(newVal, oldVal) {
      console.log('message changed:', newVal, oldVal);
    },
    immediate: true
  }
}

使用 $watch 动态监听

可以在 mounted 或方法中动态添加监听器。

export default {
  data() {
    return {
      count: 0
    }
  },
  mounted() {
    this.$watch('count', (newVal, oldVal) => {
      console.log('count changed:', newVal, oldVal);
    });
  }
}

使用 watch 替代 computed

watch 适用于需要在数据变化时执行异步或复杂逻辑的场景,而 computed 更适合计算派生数据。

vue.js watch实现

watch: {
  searchQuery(newVal) {
    this.fetchResults(newVal);
  }
},
methods: {
  fetchResults(query) {
    // 模拟 API 请求
    setTimeout(() => {
      console.log('Fetching results for:', query);
    }, 300);
  }
}

总结

  • watch 监听数据变化,适用于异步操作或复杂逻辑。
  • 使用 deep: true 监听对象内部变化。
  • immediate: true 在初始化时立即执行回调。
  • 动态监听可使用 this.$watch

标签: vuejs
分享给朋友:

相关文章

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现setinterval

vue实现setinterval

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

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…

vue实现gps

vue实现gps

Vue 中实现 GPS 定位功能 在 Vue 中实现 GPS 定位功能通常依赖于浏览器的 Geolocation API 或第三方地图服务(如高德、百度地图等)。以下是两种常见的实现方式: 使用浏览…