Demo22.vue 836 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <div>
  3. <h1>Watch:监听reactive引用数据类型</h1>
  4. <p>我叫{{ obj.name }},今年{{ obj.age }}岁</p>
  5. <button @click="changeName">修改名字</button>
  6. <button @click="changePerson">修改整体</button>
  7. </div>
  8. </template>
  9. <script lang="ts" setup>
  10. import {reactive,watch} from "vue"
  11. interface Person {
  12. name:string,
  13. age:number
  14. }
  15. let obj:Person = reactive({
  16. name:"图图",
  17. age:3
  18. })
  19. function changeName():void {
  20. obj.name = '蜡笔小新';
  21. }
  22. function changePerson():void {
  23. Object.assign(obj,{
  24. name:'瑶一瑶',
  25. age:4
  26. })
  27. }
  28. // 监听reactive引用数据类型 可以监听到属性
  29. watch(obj,(newValue:Person,oldValue:Person | undefined)=>{
  30. console.log(newValue,oldValue)
  31. },{
  32. deep:true,
  33. immediate: true
  34. })
  35. </script>
  36. <style lang="scss" scoped>
  37. </style>