1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| <template> <hr> <h2>姓名:{{person.name}}</h2> <h2>年龄:{{person.age}}</h2> <h2>薪资:{{person.job.j1.salary}}</h2> <button @click="person.name+='~'">修改姓名</button> <button @click="person.age++">修改年龄</button> <button @click="person.job.j1.salary++">修改薪资</button> </template> <script> import {ref,watch,reactive} from 'vue' export default { name: "Demo", setup(){ let sum=ref(0) let msg=ref("你好啊") let person=reactive({ name:"张三", age:18, job:{ j1:{ salary:5000 } } }) //情况三:监视reactive所定义的一个响应式数据中的所有属性 // 注意:此处无法正确地获取oldValue // 注意:强制开启了深度监视(deep配置无效) watch(person,(newValue,oldValue)=>{ console.log(newValue,oldValue) }) //情况四:监视reactive所定义的一个响应式数据中的某一个属性 watch(()=>person.age,(newValue,oldValue)=>{ console.log('person中的age变化了',newValue,oldValue) }) //情况五:监视reactive所定义的一个响应式数据中的某些属性 watch([()=>person.name,()=>person.age],(newValue,oldValue)=>{ console.log('age或name改变',newValue,oldValue) }) //特殊情况 watch(()=>person.job,(newValue,oldValue)=>{ console.log('person的job变化了',newValue,oldValue) },{deep:true}) return { person } } } </script> <style scoped> </style>
|