当前位置:首页 > VUE

vue watch 实现方法

2026-01-18 07:27:19VUE

监听基本数据类型

在Vue中使用watch监听基本数据类型(如String、Number、Boolean)时,可以直接在watch选项中定义:

data() {
  return {
    message: 'Hello'
  }
},
watch: {
  message(newVal, oldVal) {
    console.log(`消息从 ${oldVal} 变为 ${newVal}`)
  }
}

监听对象属性

需要监听对象特定属性时,可以使用点语法或字符串路径:

data() {
  return {
    user: {
      name: 'Alice'
    }
  }
},
watch: {
  'user.name'(newVal) {
    console.log(`用户名变为 ${newVal}`)
  }
}

深度监听对象

当需要监听对象所有属性变化时,需设置deep: true

watch: {
  user: {
    handler(newVal) {
      console.log('用户对象发生变化')
    },
    deep: true
  }
}

立即触发回调

配置immediate: true可在组件创建时立即执行watch回调:

watch: {
  value: {
    handler(newVal) {
      console.log('初始值:', newVal)
    },
    immediate: true
  }
}

监听数组变化

Vue能自动检测数组变异方法引起的变化,但需注意直接通过索引修改元素的情况:

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

使用$watch API

在组件实例中动态添加监听器:

created() {
  this.$watch(
    'counter',
    (newVal, oldVal) => {
      console.log(`计数器变化: ${oldVal} → ${newVal}`)
    }
  )
}

监听计算属性

可以直接watch计算属性:

computed: {
  fullName() {
    return `${this.firstName} ${this.lastName}`
  }
},
watch: {
  fullName(newVal) {
    console.log(`全名变为: ${newVal}`)
  }
}

取消监听

通过$watch返回的函数可以取消监听:

mounted() {
  const unwatch = this.$watch('data', handler)
  // 取消监听
  unwatch()
}

监听路由变化

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

vue watch 实现方法

watch: {
  '$route.params.id'(newId) {
    this.fetchData(newId)
  }
}

标签: 方法vue
分享给朋友:

相关文章

vue实现选择本地文件

vue实现选择本地文件

实现文件选择功能 在Vue中实现本地文件选择可以通过HTML原生的<input type="file">元素实现。创建一个基本的文件选择组件: <template> &l…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…

vue实现driver

vue实现driver

Vue 实现 Driver.js 引导功能 Driver.js 是一个轻量级的 JavaScript 库,用于在网页上创建引导式导览。以下是在 Vue 项目中集成 Driver.js 的详细方法:…

vue 实现拖拉

vue 实现拖拉

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