Demo4.vue 976 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <div id="demo4">
  3. <h2>姓名:{{person.name}}</h2>
  4. <h2>年龄:{{person.age}}</h2>
  5. <button @click="changeName">修改姓名</button>
  6. <button @click="changeAge">修改年龄</button>
  7. <button @click="changePerson">修改人</button>
  8. <!-- watch:reactive -->
  9. </div>
  10. </template>
  11. <script setup name="demo4" lang="ts">
  12. import {reactive,watch} from "vue";
  13. let person = reactive({
  14. name:"孙悟空",
  15. age:18
  16. })
  17. function changeAge() {
  18. person.age += 1;
  19. }
  20. function changeName() {
  21. person.name += '~';
  22. }
  23. function changePerson() {
  24. // person = {}
  25. Object.assign(person,{name:"猪八戒",age:100})
  26. }
  27. // 情况三:watch监听reactive时
  28. // 默认开启深度监听 属性及对象的新旧值都是相同的
  29. watch(person,(newValue,oldValue)=>{
  30. console.log(newValue,oldValue);
  31. })
  32. </script>
  33. <style>
  34. </style>