当前位置:首页 > VUE

vue实现监听

2026-03-07 08:11:50VUE

监听数据变化

在Vue中,可以使用watch选项或$watch方法监听数据的变化。watch允许观察Vue实例上的数据变动,并在数据变化时执行回调函数。

data() {
  return {
    message: 'Hello'
  }
},
watch: {
  message(newVal, oldVal) {
    console.log(`Message changed from ${oldVal} to ${newVal}`);
  }
}

计算属性监听

计算属性(computed)可以监听依赖数据的变化,并自动重新计算。计算属性是基于它们的响应式依赖进行缓存的,只有在相关依赖发生改变时才会重新求值。

data() {
  return {
    firstName: 'John',
    lastName: 'Doe'
  }
},
computed: {
  fullName() {
    return this.firstName + ' ' + this.lastName;
  }
}

监听DOM事件

使用v-on指令(或简写@)可以监听DOM事件,并在触发时执行方法。

<button @click="handleClick">Click me</button>
methods: {
  handleClick() {
    console.log('Button clicked');
  }
}

监听子组件事件

通过$emitv-on可以实现父子组件之间的通信。子组件触发事件,父组件监听并处理。

子组件:

this.$emit('custom-event', eventData);

父组件模板:

<child-component @custom-event="handleCustomEvent"></child-component>

监听路由变化

使用Vue Router时,可以通过watch监听$route对象的变化,响应路由参数或路径的改变。

watch: {
  '$route'(to, from) {
    console.log(`Route changed from ${from.path} to ${to.path}`);
  }
}

深度监听对象

对于对象或数组,需要使用深度监听(deep watch)来检测嵌套属性的变化。

watch: {
  obj: {
    handler(newVal, oldVal) {
      console.log('Object changed');
    },
    deep: true
  }
}

立即触发监听

通过设置immediate: true可以在监听开始时立即执行回调函数。

vue实现监听

watch: {
  value: {
    handler(newVal, oldVal) {
      console.log('Value changed');
    },
    immediate: true
  }
}

标签: vue
分享给朋友:

相关文章

vue实现选区创建

vue实现选区创建

Vue 实现选区创建的方法 在 Vue 中实现选区创建通常涉及 DOM 操作和事件处理。以下是几种常见的方法: 使用原生 DOM API 通过 window.getSelection() 和 Ran…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue实现拖放

vue实现拖放

Vue 实现拖放功能 Vue 中实现拖放功能通常可以通过 HTML5 的原生拖放 API 或第三方库(如 vuedraggable)来实现。以下是两种方法的详细说明。 使用 HTML5 原生拖放 A…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…