当前位置:首页 > 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 能检测以下数组方法触发的变更:

  • 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中可以通过集成拼音转换库(如pinyin或pinyin-pro)实现这一功能。 安装拼音转换库…

vue按钮实现截屏

vue按钮实现截屏

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

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现多用户登录

vue实现多用户登录

实现多用户登录的基本思路 在Vue中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…