当前位置:首页 > 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监听子组件事件。

<!-- 子组件 -->
<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可以让监听器在创建时立即执行一次回调函数。

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实现评论

Vue 实现评论功能的方法 基础评论组件结构 使用 Vue 单文件组件(SFC)构建评论功能的核心结构。模板部分包含评论输入框和评论列表,脚本部分处理数据绑定和逻辑。 <template>…

vue实现视频开场

vue实现视频开场

使用 Vue 实现视频开场动画 在 Vue 中实现视频开场动画可以通过结合 HTML5 的 <video> 标签和 Vue 的过渡效果或生命周期钩子来完成。以下是具体实现方法: 安装依赖…

vue循环数组实现

vue循环数组实现

vue循环数组的实现方法 在Vue中循环数组主要通过v-for指令实现,以下是几种常见用法: 基本数组循环 使用v-for指令遍历数组,可以通过(item, index)的语法获取当前项和索引值:…

vue实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addTo…

vue实现用户信息表

vue实现用户信息表

Vue 实现用户信息表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目: npm install -g @vue/cli vue create user-info-tabl…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…