当前位置:首页 > VUE

vue监听实现

2026-02-10 09:19:47VUE

Vue 监听实现方法

使用 watch 选项

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

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

立即执行的监听器

如果需要监听器在创建时立即执行一次,可以设置 immediate 选项为 true

watch: {
  message: {
    handler(newVal, oldVal) {
      console.log('Message changed')
    },
    immediate: true
  }
}

深度监听对象

默认情况下,watch 只监听对象引用的变化。如果需要监听对象内部属性的变化,可以设置 deep 选项为 true

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

使用 $watch 方法

除了在组件选项中定义监听器,还可以在组件实例上调用 $watch 方法来动态添加监听器。

vue监听实现

export default {
  created() {
    this.$watch('message', (newVal, oldVal) => {
      console.log('Message changed')
    })
  }
}

计算属性监听

对于需要基于其他数据计算的值,可以使用计算属性。计算属性会自动追踪依赖,并在依赖变化时重新计算。

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

监听路由变化

在 Vue Router 中,可以通过 watch 来监听路由变化。

vue监听实现

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

使用 .sync 修饰符

.sync 修饰符可以实现父子组件之间的双向绑定,本质上是监听 update: 事件。

// 父组件
<ChildComponent :title.sync="pageTitle" />

// 子组件
this.$emit('update:title', newTitle)

监听多个数据源

如果需要监听多个数据源的变化,可以使用数组形式的监听键。

watch: {
  ['data1', 'data2'](newValues, oldValues) {
    console.log('Data changed', newValues, oldValues)
  }
}

取消监听

通过 $watch 方法返回的函数可以取消监听。

const unwatch = this.$watch('message', handler)
unwatch() // 取消监听

以上方法涵盖了 Vue 中实现监听的常见场景,可以根据具体需求选择合适的方式。

标签: vue
分享给朋友:

相关文章

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…