|
@@ -0,0 +1,55 @@
|
|
|
+<template>
|
|
|
+ <div class="demo5">
|
|
|
+ <!-- watch:监听ref或者reactive定义的对象类型中的属性 -->
|
|
|
+ <h2>姓名:{{obj.name}}</h2>
|
|
|
+ <h2>年龄:{{obj.age}}</h2>
|
|
|
+ <h2>小车:{{obj.car.c1}}---{{ obj.car.c2 }}</h2>
|
|
|
+ <button @click="changeName">修改姓名</button>
|
|
|
+ <button @click="changeC1">修改第一辆</button>
|
|
|
+ <button @click="changeC2">修改第二辆</button>
|
|
|
+ <button @click="changeCar">全换了</button>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" name="demo5" setup>
|
|
|
+ import { reactive, watch } from "vue";
|
|
|
+ let obj = reactive({
|
|
|
+ name: "张三",
|
|
|
+ age: 18,
|
|
|
+ car: {
|
|
|
+ c1: "五菱宏光",
|
|
|
+ c2: "大众"
|
|
|
+ }
|
|
|
+ })
|
|
|
+ function changeName() {
|
|
|
+ obj.name += '~'
|
|
|
+ }
|
|
|
+ function changeC1() {
|
|
|
+ obj.car.c1 = '自行车'
|
|
|
+ }
|
|
|
+ function changeC2() {
|
|
|
+ obj.car.c2 = '电动车'
|
|
|
+ }
|
|
|
+ function changeCar() {
|
|
|
+ // Object.assign(obj,{})
|
|
|
+ obj.car = {
|
|
|
+ c1:"马车",
|
|
|
+ c2:"牛车"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 情况四:watch监听对象类型的基本属性时 写成函数形式 进行监听
|
|
|
+ * watch监听对象类型的对象属性时 写成函数形式 进行监听
|
|
|
+ */
|
|
|
+ // watch(()=>obj.name,(newValue,oldValue)=>{
|
|
|
+ // console.log(newValue,oldValue)
|
|
|
+ // })
|
|
|
+ // watch(()=>obj.car,(newValue,oldValue)=>{
|
|
|
+ // console.log(newValue,oldValue)
|
|
|
+ // })
|
|
|
+ watch(()=>obj.car.c1,(newValue,oldValue)=>{
|
|
|
+ console.log(newValue,oldValue)
|
|
|
+ })
|
|
|
+</script>
|
|
|
+
|
|
|
+<style></style>
|