1. 使用 watch
监听多个 ref/reactive 数据
javascript
import { ref, watch } from 'vue'
export default {
setup() {
const count = ref(0)
const name = ref('')
const user = reactive({ age: 20 })
// 监听多个数据源
watch(
[count, name, () => user.age], // 数组形式传入多个数据源
([newCount, newName, newAge], [oldCount, oldName, oldAge]) => {
console.log('count changed:', newCount, oldCount)
console.log('name changed:', newName, oldName)
console.log('age changed:', newAge, oldAge)
// 执行相关操作
}
)
return { count, name, user }
}
}
- 使用
watchEffect
自动追踪依赖
javascript
import { ref, watchEffect } from 'vue'
export default {
setup() {
const count = ref(0)
const name = ref('')
const active = ref(false)
watchEffect(() => {
// 这里会自动追踪所有使用到的响应式数据
console.log('数据变化:', count.value, name.value, active.value)
// 执行相关操作
})
return { count, name, active }
}
}
3. 监听对象多个属性
javascript
import { reactive, watch } from 'vue'
export default {
setup() {
const state = reactive({
count: 0,
name: '',
active: false
})
// 监听对象多个属性
watch(
() => [state.count, state.name],
([newCount, newName], [oldCount, oldName]) => {
console.log('count or name changed')
}
)
return { state }
}
}