当前位置:首页 > VUE

vue实现监听

2026-03-27 17:58:26VUE

Vue 监听实现方法

使用 watch 选项

在 Vue 组件中可以通过 watch 选项监听数据变化。当被监听的数据发生变化时,指定的回调函数会被触发。

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(newVal, oldVal) {
      console.log(`消息从 ${oldVal} 变为 ${newVal}`)
    }
  }
}

深度监听对象

对于对象或数组,需要设置 deep: true 才能监听嵌套属性的变化。

watch: {
  user: {
    handler(newVal, oldVal) {
      console.log('用户信息变化')
    },
    deep: true
  }
}

立即触发监听

设置 immediate: true 可以让监听器在创建时立即执行一次回调。

watch: {
  value: {
    handler(newVal) {
      console.log('初始值:', newVal)
    },
    immediate: true
  }
}

计算属性监听

计算属性 (computed) 可以自动追踪依赖并重新计算,适合派生数据的监听。

vue实现监听

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

使用 $watch API

可以在组件实例上直接调用 $watch 方法动态添加监听器。

mounted() {
  this.$watch(
    'count',
    (newVal, oldVal) => {
      console.log(`计数从 ${oldVal} 变为 ${newVal}`)
    }
  )
}

监听路由变化

在 Vue Router 中可以通过 watch 监听 $route 对象的变化。

vue实现监听

watch: {
  '$route'(to, from) {
    console.log(`路由从 ${from.path} 变为 ${to.path}`)
  }
}

监听 Vuex 状态

使用 mapStatewatch 可以监听 Vuex store 中状态的变化。

computed: {
  ...mapState(['user'])
},
watch: {
  user(newVal) {
    console.log('用户状态更新:', newVal)
  }
}

使用事件总线

对于跨组件监听,可以创建事件总线实现发布-订阅模式。

// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()

// 发送事件
EventBus.$emit('event-name', data)

// 监听事件
EventBus.$on('event-name', data => {
  console.log('收到事件:', data)
})

生命周期钩子监听

某些特定场景可以通过生命周期钩子实现监听效果。

updated() {
  console.log('组件已更新')
},
beforeDestroy() {
  console.log('组件即将销毁')
}

标签: vue
分享给朋友:

相关文章

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…