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

vue.js watch实现

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

立即执行回调

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

vue.js 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 更适合计算派生数据。

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.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue实现alert

vue实现alert

实现自定义 Alert 组件 在 Vue 中可以通过组件化方式实现自定义 Alert 弹窗。以下是基于 Vue 3 的实现示例: 组件代码 (Alert.vue) <template>…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…

vue实现导航栏

vue实现导航栏

使用 Vue 实现导航栏 基础导航栏结构 在 Vue 中实现导航栏通常使用 <router-link> 或自定义组件。以下是一个基础示例: <template> <…