**vue3 watch 监听对象
目的: watch 监听有多个属性的对象.
当某个属性发生变化时,返回这个属性的, key:value,
而不是返回整个 对象
这个有什么简便的方法.
还是只能写个函数进行 比对?**
如果只能自定义函数去比对, 有什么好的方法? 这个对象里,还嵌套了对象
1开启深度监听属性值,deep:true
2触发watch后,对比新旧对象,就知道是哪个属性变化了
可以直接只监听对象中的某个属性的
可以直接只监听对象中的某个属性的
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<div>{{ obj.obj1.name }}</div>
<button @click="nameChange">nameChange</button>
</div>
</template>
<script setup>
import { ref, watch } from 'vue'
const msg = ref('hello world!')
const obj = ref({
obj1: {
obj2: {
name: 'obj2'
},
name: 'obj1'
}
})
watch(() => obj.value.obj1.name, (name, prevName) => {
console.log('nameWatch', prevName)
})
const nameChange = () => {
obj.value.obj1.name = Date.now()
}
</script>
watch(message, (newVal, oldVal) => {
console.log(newVal);
console.log(oldVal);
}, {
deep: true,
immediate: true
})