Vue2:
<template>
<input type="text" v-model="age">
</template>
<script>
export default {
data(){
return {
age: 18,
sex: {
male: '1'
}
}
},
watch: {
age: {
immediate: true,
deep: true,
handler(newAge, oldAge) {
console.log('age值变化了', newAge, oldAge);
}
}
age(newAge, oldAge) {
console.log('age值变化了', newAge, oldAge);
}
"sex.male": {
handle(newmale, oldMale) {
console.log(newMale, oldMale)
}
}
}
}
</script>
Vue3:
<template>
<input type="text" v-model="msg">
<input type="text" v-model="msg2">
<input type="text" v-model="val.sex.male">
</template>
<script>
import { ref, reactive, watch } from 'vue'
const msg = ref(666)
const msg2 = ref(777)
watch(msg, (newMsg, oldMsg) => {
console.log(newMsg, oldMsg)
})
watch([msg, msg2], (newMsg, oldMsg) => {
console.log(newMsg, oldMsg)
}, {immediate: true})
const val = reactive({
name: 'zs',
age: 18,
sex: {
male: 1,
female: 0
}
})
watch(()=>val, (newMsg, oldMsg) => {
console.log(‘old值与new值相同’,newMsg, oldMsg)
},{deep: true})
watch(()=>val.name, (newMsg, oldMsg) => {
console.log(newMsg, oldMsg)
},{deep: true, immediate: true})
watch([()=>val.name, ()=>val.age], (newMsg, oldMsg) => {
console.log(newMsg, oldMsg)
},{deep: true, immediate: true})
watch(()=>val.sex, (newMsg, oldMsg) => {
console.log(newMsg, oldMsg)
},{deep: true, immediate: true})
</script>