当前位置:首页 > 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 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterva…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…