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

vue watch 实现方法

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

监听数组变化

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

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

使用$watch API

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

vue watch 实现方法

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()
}

监听路由变化

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

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

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

相关文章

vue 实现全选

vue 实现全选

Vue 实现全选功能 在 Vue 中实现全选功能通常需要结合复选框的状态管理,以下是几种常见的实现方式: 使用 v-model 绑定数组 通过 v-model 绑定一个数组来管理选中的项,全选时将…

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [...t…

vue实现访问量

vue实现访问量

Vue 实现访问量统计的方法 使用前端计数 在 Vue 中可以通过简单的计数器实现页面访问量的统计。这种方法适合小型项目或演示用途。 // 在 Vue 组件中 data() { return…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直…