当前位置:首页 > VUE

vue实现数据监听

2026-02-19 13:09:26VUE

Vue 数据监听实现方式

Vue 提供了多种方式实现数据监听,核心机制基于响应式系统。以下是常见方法:

使用 watch 选项

在组件选项中直接定义 watch 对象,监听特定数据变化:

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(newVal, oldVal) {
      console.log('Message changed:', newVal)
    }
  }
}

立即执行的 watch

添加 immediate: true 使监听器立即执行一次:

vue实现数据监听

watch: {
  message: {
    handler(newVal) {
      console.log('Initial load:', newVal)
    },
    immediate: true
  }
}

深度监听对象

设置 deep: true 监听对象内部变化:

watch: {
  user: {
    handler(newVal) {
      console.log('User data changed')
    },
    deep: true
  }
}

计算属性 computed

派生状态监听,自动依赖追踪:

vue实现数据监听

computed: {
  reversedMessage() {
    return this.message.split('').reverse().join('')
  }
}

$watch API

编程式动态添加监听器:

created() {
  this.$watch(
    () => this.count,
    (newVal) => {
      console.log('Count changed to:', newVal)
    }
  )
}

数组变化监听

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

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

响应式原理

Vue 3 使用 Proxy 实现响应式,Vue 2 使用 Object.defineProperty。手动使新属性响应式:

// Vue 2
this.$set(this.obj, 'newProp', value)

// Vue 3
import { reactive } from 'vue'
const state = reactive({ count: 0 })

选择合适的方式取决于具体场景:简单数据变化用 watch,派生数据用 computed,需要深度监听时配置 deep 选项。

标签: 数据vue
分享给朋友:

相关文章

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…

vue实现hovuer

vue实现hovuer

Vue 实现 Hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 直接控制 通过 :hover 伪类实现,无需额外的 JavaScrip…

vue实现系统

vue实现系统

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

vue实现阻塞

vue实现阻塞

Vue 实现阻塞的方法 在 Vue 中实现阻塞操作通常涉及异步控制、状态管理或生命周期钩子的使用。以下是几种常见方法: 使用 async/await 处理异步阻塞 通过 async/await 可…