当前位置:首页 > 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 更适合计算派生数据。

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

vue.js watch实现

标签: vuejs
分享给朋友:

相关文章

vue实现muli

vue实现muli

Vue 实现多语言(i18n)支持 在 Vue 项目中实现多语言(i18n)功能,通常使用 vue-i18n 插件。以下是具体实现步骤: 安装 vue-i18n npm install vue…

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 路由可以通过 Vue Router 库来实现,Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue Router…

vue网页实现

vue网页实现

Vue 网页实现指南 环境准备 安装 Node.js 和 npm/yarn,确保环境配置正确。使用 Vue CLI 或 Vite 创建项目框架,快速搭建开发环境。 npm install -g @…

vue工序实现

vue工序实现

Vue 工序实现方法 在Vue中实现工序(或流程)功能,通常涉及状态管理、组件通信和动态渲染。以下是几种常见方法: 使用动态组件 通过Vue的<component :is="currentC…

vue实现单击

vue实现单击

Vue 实现单击事件的方法 在 Vue 中实现单击事件可以通过 v-on 指令或简写的 @ 符号绑定事件处理器。以下是几种常见的实现方式: 基础用法 通过 v-on:click 或 @click…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…