当前位置:首页 > VUE

vue要实现watch

2026-01-19 13:22:40VUE

监听数据变化的基本用法

在Vue中,watch用于监听响应式数据的变化。当数据变化时,执行特定的回调函数。基本语法如下:

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(newVal, oldVal) {
      console.log(`新值: ${newVal}, 旧值: ${oldVal}`)
    }
  }
}

深度监听对象

当需要监听对象内部属性的变化时,使用deep选项:

watch: {
  obj: {
    handler(newVal, oldVal) {
      console.log('对象变化')
    },
    deep: true
  }
}

立即触发监听

使用immediate选项可以在组件创建时立即触发监听:

watch: {
  value: {
    handler(newVal) {
      console.log('立即触发:', newVal)
    },
    immediate: true
  }
}

监听数组变化

Vue能自动检测数组的变异方法(如push/pop等)。如需监听数组元素变化:

vue要实现watch

watch: {
  arr: {
    handler(newVal) {
      console.log('数组变化:', newVal)
    },
    deep: true
  }
}

计算属性与watch结合

当需要基于多个数据变化进行计算时,可结合计算属性使用:

computed: {
  fullName() {
    return this.firstName + ' ' + this.lastName
  }
},
watch: {
  fullName(newVal) {
    console.log('全名变化:', newVal)
  }
}

监听路由变化

在组件内监听路由参数变化:

watch: {
  '$route'(to, from) {
    console.log('路由变化', to.path)
  }
}

使用$watch API

动态添加和移除监听:

vue要实现watch

export default {
  mounted() {
    const unwatch = this.$watch('data', (newVal) => {
      console.log('动态监听:', newVal)
    })
    // 调用unwatch()停止监听
  }
}

性能优化技巧

避免在watch中执行复杂操作,必要时使用debounce:

import _ from 'lodash'

watch: {
  searchText: _.debounce(function(newVal) {
    this.fetchResults(newVal)
  }, 500)
}

watch与async/await

在watch中使用异步操作:

watch: {
  async userId(newVal) {
    const data = await fetchUser(newVal)
    this.user = data
  }
}

组件props监听

监听父组件传递的props变化:

props: ['user'],
watch: {
  user(newVal) {
    console.log('用户数据更新', newVal)
  }
}

标签: vuewatch
分享给朋友:

相关文章

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue实现fadein

vue实现fadein

Vue 实现 FadeIn 效果 在 Vue 中实现淡入(FadeIn)效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法: 使用 CSS 过渡 通过 Vue 的过渡系统结合 CS…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容…

vue拖拽实现

vue拖拽实现

Vue 拖拽实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…