当前位置:首页 > VUE

vue里怎么实现监听

2026-01-22 20:49:11VUE

监听数据变化

在Vue中可以通过watch选项或$watch方法监听数据变化。watch允许观察某个数据属性,当其发生变化时执行指定的回调函数。

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

计算属性监听

使用计算属性可以监听依赖数据的变化并返回计算结果。计算属性具有缓存机制,只有当依赖数据变化时才会重新计算。

export default {
  data() {
    return {
      firstName: '张',
      lastName: '三'
    }
  },
  computed: {
    fullName() {
      return this.firstName + this.lastName
    }
  }
}

监听DOM事件

通过v-on指令或@简写可以监听DOM事件并执行相应的方法。

<template>
  <button @click="handleClick">点击我</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('按钮被点击')
    }
  }
}
</script>

监听子组件事件

使用$emit触发自定义事件,父组件通过v-on监听子组件事件。

vue里怎么实现监听

<!-- 子组件 -->
<button @click="$emit('custom-event', '数据')">触发事件</button>

<!-- 父组件 -->
<child-component @custom-event="handleCustomEvent"></child-component>

深度监听对象

对于对象或数组,需要设置deep: true选项才能监听到内部属性的变化。

export default {
  data() {
    return {
      user: {
        name: '张三',
        age: 20
      }
    }
  },
  watch: {
    user: {
      handler(newVal) {
        console.log('用户信息变化', newVal)
      },
      deep: true
    }
  }
}

立即触发监听

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

vue里怎么实现监听

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

监听路由变化

通过watch监听$route对象可以响应路由变化。

watch: {
  '$route'(to, from) {
    console.log(`从 ${from.path} 跳转到 ${to.path}`)
  }
}

生命周期钩子监听

在生命周期钩子中监听特定事件或执行操作。

export default {
  created() {
    window.addEventListener('resize', this.handleResize)
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.handleResize)
  },
  methods: {
    handleResize() {
      console.log('窗口大小改变')
    }
  }
}

使用第三方库监听

对于复杂场景,可以使用如Vuex的状态管理库或EventBus进行跨组件监听。

// EventBus示例
const bus = new Vue()

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

// 接收事件
bus.$on('event-name', data => {
  console.log('收到事件', data)
})

标签: vue
分享给朋友:

相关文章

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { --…

vue实现文字播放栏

vue实现文字播放栏

Vue 实现文字播放栏(跑马灯效果) 方法一:使用 CSS 动画 + Vue 数据绑定 通过 CSS 的 @keyframes 实现动画效果,结合 Vue 的动态数据绑定控制内容。 <tem…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model 指…

实现vue

实现vue

安装Vue.js 通过npm安装Vue.js是最常见的方式。确保已安装Node.js和npm,运行以下命令: npm install vue 或者使用CDN直接引入: <script src…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的…

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Obje…