当前位置:首页 > 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 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue router 实现

vue router 实现

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

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue实现影院

vue实现影院

Vue实现影院功能的基本思路 使用Vue框架开发影院功能需要结合前端组件化开发、状态管理以及后端API交互。以下是关键实现步骤: 影院页面布局设计 影院页面通常分为顶部导航栏、影院列表区域和底部导航…