Demo12.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <div>
  3. <h2>
  4. watch:监听数据变化
  5. </h2>
  6. <!-- 监听reactive引用数据类型多个个属性:
  7. 写成数组 数组中用函数体 用逗号分割
  8. -->
  9. <p>
  10. 我叫{{ obj.name }},今年{{ obj.age }}岁了,我有{{ obj.car.c1 }}和{{ obj.car.c2 }}
  11. </p>
  12. <button @click="changeAge">修改年龄</button>
  13. <button @click="changeCar1">修改第一辆车</button>
  14. <button @click="changeCar">修改所有车</button>
  15. <button @click="changePerson">修改整体</button>
  16. </div>
  17. </template>
  18. <script lang="ts" setup>
  19. import {ref,reactive,watch} from "vue"
  20. let obj = reactive({
  21. name:"瑶一瑶",
  22. age: 4,
  23. car:{
  24. c1:"大众",
  25. c2:'奥迪'
  26. }
  27. })
  28. function changeAge() {
  29. obj.age = 4.5;
  30. }
  31. function changeCar1() {
  32. obj.car.c1 = '迈巴赫'
  33. }
  34. function changeCar() {
  35. obj.car = {
  36. c1:"自行车",
  37. c2:"摩托车"
  38. }
  39. }
  40. function changePerson() {
  41. let obj1 = {
  42. name:"瑶一瑶小肉包",
  43. age: 4.7,
  44. car:{
  45. c1:"拖拉机",
  46. c2:"挖掘机"
  47. }
  48. }
  49. Object.assign(obj,obj1)
  50. }
  51. watch([()=>obj.age,()=>obj.car],(news,olds)=>{
  52. console.log(news,olds)
  53. })
  54. </script>
  55. <style lang="scss" scoped>
  56. </style>