vue监听实现
Vue 监听实现方法
Vue 提供了多种监听数据变化的方式,以下是常见的实现方法:
watch 选项
在 Vue 组件选项中定义 watch 对象,可以监听特定数据的变化并执行回调函数。
export default {
data() {
return {
message: 'Hello'
}
},
watch: {
message(newVal, oldVal) {
console.log('message changed from', oldVal, 'to', newVal)
}
}
}
$watch 方法
在组件实例中使用 $watch 方法进行动态监听,这种方式适合在需要时添加监听器。

export default {
created() {
this.$watch('message', (newVal, oldVal) => {
console.log('message changed from', oldVal, 'to', newVal)
})
}
}
computed 计算属性
对于需要基于其他数据计算得出的值,使用计算属性可以自动跟踪依赖并更新。
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe'
}
},
computed: {
fullName() {
return this.firstName + ' ' + this.lastName
}
}
}
深度监听对象
当需要监听对象内部属性的变化时,可以使用 deep 选项。

export default {
data() {
return {
user: {
name: 'Alice',
age: 25
}
}
},
watch: {
user: {
handler(newVal) {
console.log('user changed', newVal)
},
deep: true
}
}
}
立即触发监听
有时需要在初始化时立即执行监听回调,可以使用 immediate 选项。
export default {
watch: {
message: {
handler(newVal) {
console.log('message is', newVal)
},
immediate: true
}
}
}
监听路由变化
在 Vue Router 中,可以监听 $route 对象的变化来响应路由切换。
export default {
watch: {
'$route'(to, from) {
console.log('route changed from', from.path, 'to', to.path)
}
}
}
这些方法覆盖了 Vue 中大多数监听场景的需求,可以根据具体使用情况选择合适的方式。






