在Vue中,watch 本身不能监听多个变量。但我们可以通过返回具有计算属性的对象然后监听该对象,从而实现一次性“监听多个变量”。
- 在data中定义需要的属性
- 在computed中返回一个包含将被监听的的各个对象的计算属性
- 在watch中监听该计算属性
举个例子:
export default {
data() {
return {
msg1: "message1",
msg2: "message2"
}
},
computed: {
msgObj() {
const { msg1, msg2 } = this
return {
msg1,
msg2
}
}
},
watch: {
msgObj: {
handler(newVal, oldVal) {
//newVal和oldVal的值就是新旧msgObj的值,即msg1和msg2的值
//接下来在这里写将要进行的操作
if (newVal.msg1 != oldVal.msg1) {
console.log( "msg1 is change!!!" )
}
if (newVal.msg2 != oldVal.msg2) {
console.log( "msg2 is change!!!" )
}
},
deep: true
}
}
}
这样,我们就实现了再watch中一次性监听两个值的变化。
想要一次性监听更多个值也可以这么操作。