当前位置: 首页 > news >正文

watch监视特定属性

watch监视特定属性

前置代码

<template><div class="person"><h2>{{ ItShare.name }}</h2><h2>{{ ItShare.day }}</h2><h2>{{ ItShare.title.t1 }},{{ ItShare.title.t2 }}</h2><button @click="ChangeName">修改名字</button><button @click="ChangeDay">修改天数</button><button @click="ChangeT1">修改标题1</button><button @click="ChangeT2">修改标题2</button><button @click="ChangeT">修改整个标题</button></div>
</template><script lang="ts" setup>
import { reactive } from 'vue';let ItShare = reactive({name: "IT知识一享",day: 365,title: {t1:'学习VUE',t2:'掌握VUE'}})function ChangeName() {ItShare.name += '*';}function ChangeDay() {ItShare.day +=1;}function ChangeT1() {ItShare.title.t1 = '熟悉VUE'}function ChangeT2() {ItShare.title.t2 = '精通VUE'}function ChangeT(){ItShare.title = {t1:'VUE大师',t2:'VUE大师+'}}</script><style scoped>.person{background-color: rgb(39, 148, 191);padding-left: 50px;}.btn {display: flex;gap:20px}
</style>
  • 这个代码就不作讲解了,已经是非常非常简单的代码了;

Watch监视使用Getter函数某个属性

  • 首先我们来最简单的,我们用watch只监视名字的变化
  watch(() => ItShare.name,(newValue,oldValue) => {console.log('姓名发生了变化',newValue,oldValue)})

在这里插入图片描述

注意事项:

  1. 回顾一下getter函数,getter函数就是一个专门用来’获取‘对象内部属性值的函数。通俗的说,他是一个函数,返回一个值;
  2. 在watch监视reactive对象类型属性的时候,旧值和新值是一样的,但是如果监视特定属性的时候,它们一定是不一样的;
  3. 如果watch属性值不是对象类型的,需要写成函数形式,如果属性值是对象类型,可以直接写,但是建议写函数;
  • 那我们在看看监视对象里面的对象类型
watch(ItShare.title,(newValue,oldValue) => {console.log('title发生了变化',newValue,oldValue)})
  • 我们发现这里我们没有写函数的形式,但是没有报错,我们试试监视是否是正常的;

在这里插入图片描述

我们发现对象里面的属性是可以被监视到的,但是对象本身监视不到,这其实香香也很简单,你监视title,但是你点击修改整个title的时候,title已经不是以前的title了,他地址值已经改变了,所以watch当然监视不到

  • 那我们通过函数的方式来试试
watch(() => ItShare.title,(newValue,oldValue) => {console.log('title发生了变化',newValue,oldValue)})

在这里插入图片描述

  • 现在我们发现对象里面的属性变化watch监视不到了,但是对象本身的变化可以被监视到,这个相信大家一猜就猜到了,因为我们现在监视的就是对象本身,如果我们像监视到对象内部的属性,我们应该开启深度监视;
  watch(() => ItShare.title,(newValue,oldValue) => {console.log('title发生了变化',newValue,oldValue)},{deep: true})

在这里插入图片描述

现在就可以全部监视到了,所以当我们像监视对象类型的某个属性的时候,不管这个属性是基本类型的还是对象类型的,最佳实践我们都应该使用getter函数的形式来书写

http://www.dtcms.com/a/602751.html

相关文章:

  • 43. LINUX网络编程(1)
  • LLMops与MLOps
  • 织梦本地安装网站wordpress 迁移 ip
  • 网站建设 目标网站怎么做落款
  • 贵阳做网站kuhugz网站结构图怎么做
  • 攻击链重构的具体实现思路和分析报告
  • 免费软件下载网站app交易网站建设具体方案
  • 怎么做非法彩票网站西安搜建站科技网站
  • 怎样做农产品交易平台网站asp网站开发环境
  • 从混沌中见你所见——文生图的逆向浪漫
  • 啊里云服务器怎么做网站建筑设计师要学什么专业
  • 11月12日numpy学习总结——numpy的广播规则
  • 网站建设设计流程步骤万网网站域名多少钱一年
  • Flutter---Dart基础
  • 网站权重怎么看用jsp做校园网站
  • 网页制作与网站建设初学者必看教程杭州网站开发凡客
  • 如何解决解决,微信小程序ios无法长按复制问题<text>设置 selectable=“true“不起作用
  • Linux驱动知识点:容器嵌入机制(Container Embedding)
  • 深圳网站的建设维护公司现代农业建设 乡网站
  • Flutter---异步编程
  • 为什么浙江建设厅网站漯河市建设监理协会网站
  • 中国建设银行海南省分行网站教学活动设计方案模板
  • Nginx 零停机平滑升级完整指南
  • 洞头区网站建设收费本地同城服务平台
  • 易语言网站做软件下载上海园区虚拟地址一览表
  • wordpress多站点好吗网页设计居中代码
  • 继荣获GitCode G-Star认证后,数式Oinone入选2025年GitCode百大开源项目
  • 青少年CTF Crypto-factor1
  • 做平面哪个网站的素材最好wordpress一键 centos
  • 商城网站 搭建做小程序的平台