当前位置:首页 > VUE

vue监听实现

2026-01-13 02:00:27VUE

Vue 监听实现方法

Vue 提供了多种方式来实现数据监听,以下是常见的几种方法:

watch 选项

在 Vue 实例中使用 watch 选项可以监听数据变化并执行相应操作:

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

$watch 方法

可以通过实例方法 $watch 动态添加监听器:

const vm = new Vue({
  data: {
    count: 0
  }
});

vm.$watch('count', function(newVal, oldVal) {
  console.log(`计数从 ${oldVal} 变为 ${newVal}`);
});

computed 计算属性

计算属性会根据依赖的响应式数据自动更新:

new Vue({
  data: {
    firstName: '张',
    lastName: '三'
  },
  computed: {
    fullName() {
      return this.firstName + ' ' + this.lastName;
    }
  }
});

深度监听对象

使用 deep 选项可以深度监听对象内部变化:

new Vue({
  data: {
    user: {
      name: '李四',
      age: 25
    }
  },
  watch: {
    user: {
      handler(newVal) {
        console.log('用户信息变化', newVal);
      },
      deep: true
    }
  }
});

立即触发监听

使用 immediate 选项可以让监听器在创建时立即执行一次:

new Vue({
  data: {
    value: '初始值'
  },
  watch: {
    value: {
      handler(newVal) {
        console.log('当前值:', newVal);
      },
      immediate: true
    }
  }
});

监听路由变化

在 Vue Router 中可以监听路由变化:

watch: {
  '$route'(to, from) {
    console.log(`从 ${from.path} 跳转到 ${to.path}`);
  }
}

数组变更监听

Vue 能检测以下数组方法触发的变更:

vue监听实现

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()
new Vue({
  data: {
    items: [1, 2, 3]
  },
  watch: {
    items: {
      handler(newVal) {
        console.log('数组变化:', newVal);
      },
      deep: true
    }
  }
});

注意事项

  1. 对于对象和数组的深度监听可能影响性能,应谨慎使用
  2. 计算属性默认有缓存,只有当依赖变化时才会重新计算
  3. 对于复杂数据结构,可能需要使用特殊方法确保响应性
  4. 在组件销毁时,手动添加的监听器需要手动移除

标签: vue
分享给朋友:

相关文章

vue手动实现弹窗

vue手动实现弹窗

实现弹窗组件的基本结构 在Vue中手动实现弹窗组件,需要创建一个独立的弹窗组件,并通过props控制其显示与隐藏。弹窗组件通常包含遮罩层、内容区域和关闭按钮。 <template>…

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm install…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件可…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…