当前位置:首页 > VUE

vue 通过监听实现

2026-01-18 03:02:30VUE

监听数据变化

Vue 中可以通过 watch 选项或 $watch 方法监听数据的变化。watch 允许对特定的数据属性设置回调函数,当数据变化时自动触发。

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

监听事件

Vue 组件可以通过 v-on 指令或 $on 方法监听自定义事件。子组件可以通过 $emit 触发事件,父组件监听并处理。

// Child Component
this.$emit('custom-event', payload)

// Parent Component
<child-component @custom-event="handleEvent" />

监听 DOM 事件

在模板中可以直接使用 v-on 监听原生 DOM 事件,如点击、输入等。

<button @click="handleClick">Click me</button>
<input @input="handleInput" />

深度监听对象

当需要监听对象或数组内部变化时,可以设置 deep: true 选项。这对于嵌套数据结构特别有用。

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

立即触发监听

设置 immediate: true 可以让监听回调在初始赋值时立即执行一次,而不必等待第一次变化。

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

监听路由变化

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

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

计算属性监听

虽然计算属性本身是响应式的,但可以通过 watch 监听计算属性的变化,执行特定逻辑。

computed: {
  fullName() {
    return this.firstName + ' ' + this.lastName
  }
},
watch: {
  fullName(newVal) {
    console.log('Full name changed to', newVal)
  }
}

监听多个数据源

可以使用数组形式同时监听多个数据源,回调函数会接收对应顺序的新旧值数组。

watch: {
  ['a', 'b'](newVals, oldVals) {
    console.log('a changed from', oldVals[0], 'to', newVals[0])
    console.log('b changed from', oldVals[1], 'to', newVals[1])
  }
}

vue 通过监听实现

标签: vue
分享给朋友:

相关文章

vue实现选区创建

vue实现选区创建

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

vue实现检测数组

vue实现检测数组

Vue 中检测数组变化的方法 Vue 的响应式系统无法直接检测到数组的某些变化,因为 JavaScript 的限制。以下是一些解决方案: 使用 Vue.set 或 this.$set Vue…

vue实现自动翻译

vue实现自动翻译

Vue 实现自动翻译的方法 在 Vue 项目中实现自动翻译功能可以通过多种方式完成,以下是几种常见的方法: 使用第三方翻译 API 注册并获取翻译 API 的密钥(如 Google Translat…

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

课程表vue实现

课程表vue实现

实现课程表的Vue组件 创建课程表需要设计数据结构、布局和交互逻辑。以下是一个基于Vue 3的实现方案: 数据结构设计 const timetableData = ref([ {…

vue实现弹窗可切换

vue实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…