首页 > 其他分享 >Vue3 watch方法----监视对象

Vue3 watch方法----监视对象

时间:2024-10-06 19:32:54浏览次数:1  
标签:name newVal 监视 watch ---- person oldVal Vue3

使用watch时,如果想监视对象的内部属性值。需要使用watch的第三个参数的配置对象,手动开启深度监视。

//使用watch时如果想监视对象内部的属性值,需要使用watch的第三个参数,手动开启深度监视
watch(person, (newValue, oldValue)=>{
    console.log('person发生了变化',newValue, oldValue);
}, {
    deep:true
})

注意:在对象中如果这个person没有经过深度拷贝的话,那么newValue和oldValue的值是一样的。

如果想要监视对象里面的某个属性,那么需要时用箭头函数返回这个属性,例如:

watch(()=>{return person.name}, (newVal, oldVal) => {
    console.log(newVal, oldVal);
}) 
<template>
    <!-- 
        watch;监视ref定义的对象类型的数据
    -->
    <div class="person">
        姓名:{{ person.name }}
        年龄:{{ person.age }}
        <button @click="changeName">修改姓名</button>
        <button @click="changeAge">修改年龄</button>
    </div>
</template>
<script setup lang="ts">
// 需求:当值大于多少时,执行什么操作
import { reactive, watch } from "vue";
let person = reactive({
    name:"zhangsan",
    age:18
})
function changeName() {
    person.name = "王五"
}
function changeAge() {
    person.age = 20
}

watch(()=>{return person.name}, (newVal, oldVal) => {
    console.log(newVal, oldVal);
    
}) 

</script>

<style scoped>
.person {
    background: #ddd;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding: 20px;
}
button {
    margin: 0 5px;
}
</style>

上述代码,只有在person.name发生改变的时候,watch方法才会发生改变。

如果监视一个整个的对象,那么建议函数返回值,并且开启深度监视,如下(person.car是一个对象):

watch(()=>{return person.car}, (newVal, oldVal) => {
    console.log(newVal, oldVal);
}, {
    deep:true
}) 

 

标签:name,newVal,监视,watch,----,person,oldVal,Vue3
From: https://www.cnblogs.com/yansunda/p/18449046

相关文章

  • 注解和反射Day01
    注解和反射注解AnnotationAnnotation的作用不是程序本身,可以对程序作出解释(这一点和注释comment没有区别)可以被其他程序(比如编译器)读取Annotation的格式注解是以”@注释名“在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")Annotation......
  • DiLiGenT光度立体数据集
    简介”DiLiGenT“光度立体数据集,全称为calibratedDirectionalLightings,objectsofGeneralreflectance,and‘groundTruth’shapes(normals),即使用标定过的定向光源,对一些具有常见反射率特性的物体进行光度立体拍摄,并获取到精确的物体表面法向信息作为真值的这样数据......
  • Python 高级编程:高效读取 txt 文件的技巧与实践
    在Python中,读取txt文件是一项常见的操作。以下将介绍一些高级的方法来实现这一功能:使用with语句自动管理文件资源withopen('file.txt','r')asfile:content=file.read()print(content)with语句可以确保在代码块执行完毕后,文件会被正确地关闭,避免了资源泄漏......
  • WPF string format
    Text="{BindingStringFormat={}{0}items,Source={StaticResourcemainVM},Path=Cnt}"                //xaml<Windowx:Class="WpfApp17.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pre......
  • jsp测试缺陷管理系统3166o程序+源码+数据库+调试部署+开发环
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着软件行业的迅速发展,软件质量成为企业竞争力的关键因素。在软件开发过程中,测试缺陷管理系统是确保软件质量的重要环节。传统的缺陷......
  • ReentrantLock 实现原理
    文章目录ReentrantLock基本使用可重入锁等待可中断设置超时时间公平锁条件变量ReentrantLock原理加锁流程解锁流程可重入锁原理可打断原理公平锁原理条件变量原理ReentrantLock基本使用在Java中,synchronized和ReentrantLock都是用于确保线程同步的锁,都属于......
  • 排序
    排序的定义排序就是重新排列表中的元素,使表中的元素满足关键字有序的过程算法的稳定性:若待排序表中有两个元素相等,经过排序后原来位置这两个元素的相对位置不变,则称这个算法是稳定的根据在排序过程中数据元素是否完全放在内存中,可以将排序算法分为两类:内部排序和外部排序。内部......
  • [JOI 2024 Final] 建设工程 2
    [JOI2024Final]建设工程2题意给出一张图和\(S\),\(T\)。可在任意两点\(u,v(u<v)\)之间添加一条长度为\(L\)的边(只可添加一次)。求有多少种添加方案使得\(S\)到\(T\)的最短路长度\(\leK\)。思路首先,若\(S\)到\(T\)的最短路已经\(\leK\),答案为\(\frac{n\t......
  • Pool Kings All In One
    PoolKingsAllInOne泳池之王demosPoolKings-MountainParadise/泳池之王-山间天堂UtahwaterfallMountainhttps://vimeo.com/233842674https://www.facebook.com/trimlight/videos/1771649019535521/https://www.imdb.com/title/tt5797926/(......
  • E61 树形DP P8744 [蓝桥杯 2021 省 A] 左孩子右兄弟
    视频链接:  P8744[蓝桥杯2021省A]左孩子右兄弟-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DPO(n)#include<bits/stdc++.h>usingnamespacestd;constintN=100005;intn,f[N],son[N];inthead[N],idx;structE{intv,ne;}e[N<<1];voidadd(intu......