当前位置:首页 > 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实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addToC…

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue实现计时

vue实现计时

Vue 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterv…

vue实现轮询

vue实现轮询

实现轮询的基本方法 在Vue中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…