Vue3学习——computed、watch、watchEffect

computed

  • 与Vue2.x中computed配置功能一致
  • 写法
import {computed} from 'vue'setup(){...//计算属性——简写let fullName = computed(()=>{return person.firstName + '-' + person.lastName})//计算属性——完整let fullName = computed({get()return person.firstName + '-' + person.lastName},set(value){const nameArr = value.split('-')person.firstName = nameArr[0]person.lastName = nameArr[1]}})
}

watch

  • 注意
    • 监视reactive定义的响应式数据时:oldValue无法正确获取、强制开启了深度监视(deep配置失效)。
    • 监视reactive定义的响应式数据中的某个属性时:deep配置有效。
情况一:监视ref定义的响应式数据
  • 监视ref定义的对象,改变某一个属性时,newValue和oldValue是同一个值;
  • 若改变整个对象newValue和oldValue不一样;
	 watch(sum, (newValue, oldValue) => {console.log('sum变化了', newValue, oldValue)}, {immediate: true})

情况二:监视多个ref定义的响应式数据(写成数组格式)

	watch([sum, msg], (newValue, oldValue) => {console.log('sum或msg变化了', newValue, oldValue)})

情况三:监视reactive定义的响应式数据,deep默认开启,且关不掉

	 watch(person, (newValue, oldValue) => {console.log('person变化了', newValue, oldValue)}, {immediate: true, deep: false}) //此处的deep配置不再奏效

情况四:监视reactive定义的响应式数据中某个属性

  • 可以监视整体改变,也可以监视某个属性改变
  • 监视的属性不是【对象类型】,需写成函数
  • 监视的属性是【对象类型】,可直接编,也可使用函数,推荐使用函数并添加deep属性
    (因为直接写person,无法监听到整个对象的改变;deep是为了深层监听)
    watch(() => person.job, (newValue, oldValue) => {console.log('person的job变化了', newValue, oldValue)}, {immediate: true, deep: true})

情况五:监视reactive定义的响应式数据中某些属性

    watch([() => person.job, () => person.name], (newValue, oldValue) => {console.log('person的job变化了', newValue, oldValue)}, {immediate: true, deep: true})

特殊情况

    watch(() => person.job, (newValue, oldValue) => {console.log('person的job变化了', newValue, oldValue)}, {deep: true}) //此处由于监视的是reactive素定义的对象中的某个属性,所以deep配置有效

停止监视

    const stopWatch =  watch(sum, (newValue, oldValue) => {console.log('sum变化了', newValue, oldValue)if (sum > 10) {stopWatch() // 停止监视}})

watchEffect

  • watch的套路:既要指明监视的属性,也要指明监视的回调。

  • watchEffect的套路:不用指明监视的哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。

  • watchEffect有点像computed:

  • 但computed注重的计算出来的值(回调函数的返回值),所以必须要写返回值。而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。


// watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调。初始化也会执行一次watchEffect(()=>{const x1 = sum.valueconst x2 = person.ageconsole.log('watchEffect配置的回调执行了')
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法——模拟

1. 什么是模拟算法? 官方一点来说 模拟算法(Simulation Algorithm)是一种通过模拟现实或抽象系统的运行过程来研究、分析或解决问题的方法。它通常涉及创建一个模型,模拟系统中的各种事件和过程,以便观察系统的行为&a…

Redis缓存一致性问题(自用记录)

背景 在开发过程中,redis缓存技术被大范围应用。由于现在的系统大多是分布式的,高并发的,redis和传统的数据库,存在数据不一致的问题。 解决方案 本文主要探讨两者数据不一致的解决方案: 给缓存设置过期时间&#x…

dell戴尔电脑灵越系列Inspiron 15 3520原厂Win11系统中文版/英文版

Dell戴尔笔记本灵越3520原装出厂Windows11系统包,恢复出厂开箱预装OEM系统 链接:https://pan.baidu.com/s/1mMOAnvXz5NCDO_KImHR5gQ?pwd3nvw 提取码:3nvw 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、MyD…

Jmeter接口测试 ,这应该是全网最详细的教程了

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、Jmeter 的使用步骤 打开Jmeter 安装包,进入\bi…

postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况&…

【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.冯诺依曼体系结构特…

kafka和ZK的关系

zk相当于是kafka的一个基础设施 Kafka是一种高吞吐量、可扩展的分布式发布订阅消息系统,ZooKeeper是一个分布式协调服务,用于管理和协调分布式系统中的各种资源 Zookeeper:管理broker,consumer 创建broker后,向zk注册…

适用于生物行业的样本管理系统

在生物样本管理系统的应用中,我们首先需要了解生物样本的特点和要求。生物样本具有多样性和易变性,需要被妥善保存和跟踪,以确保其质量和可用性。 因此,一个有效的生物样本管理系统需要具备以下特点: 全面性&#xff1…

Spring Event的原理以及缺陷

原理:Spring 事件监听机制及原理分析 - Admol - 博客园 (cnblogs.com) 使用bug:Spring Event 别瞎用!从我司的悲剧中,我总结了6 条最佳实践!-腾讯云开发者社区-腾讯云 (tencent.com)

2024最新任推邦邀请码是什么

任推邦是一款非常受欢迎的推广APP,任推邦邀请码是【222222】获得现金奖励和提成奖励用户可以通过邀请好友加入来获取收益。2024最新的任推邦邀请码是【222222】,小编已经给大家整理好了他趣许多的邀请码,想要领取奖励的小伙伴快来和小编一起了…

聚合函数()不要随意加空格

报错:1630 - FUNCTION link.SUM does not exist. Check the Function Name Parsing and Resolution section in the Reference Manual 解决方法:count、avg、sum等函数后紧随的()之间不能加空格,去掉这个空格即可,因为count()、a…

js 监听元素是否出现在可视区域--IntersectionObserver

观察者模式监听判断dom元素是否在可视区域内 本项目是使用vue3的写法。 1.IntersectionObserver IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内,而不需要频繁的计算来做这个判断。由于可见(visible)的本质是&…

融中穿刺路径角度评估的C++技术实现

消融模型的三维渲染 我们以肝部为例,通常肝部在做消融手术规划时有几个步骤。 一三维重建: 对器官进行图像分割; 对肿瘤的原发区域GTV进行勾画。 二穿刺路径的规划: 路径规划当中有几个约束:穿刺深度、危及器官的…

OpenAI推出首个AI视频模型Sora:重塑视频创作与体验

链接:华为OD机考原题附代码 Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着…

SpringBoot快速整合Thymeleaf实现文件上传案例

SpringBoot快速整合Thymeleaf实现文件上传案例 文章目录 SpringBoot快速整合Thymeleaf实现文件上传案例1. 创建工程2. pom.xml文件2. application.yml 配置3. 前端fileupload.html4. 后端Controller 本案例环境: SpringBoot: 2.3.0.RELEASEJDK: 1.8前端模板: thymel…

【PHP进阶】Redis批处理缓存

大家好,我是程序员若风,又到了技术分享时刻。 概要 在某些场景下,我们需要频繁的使用到缓存,比如需要获取多个key值,如果采用单个拿缓存的办法,会造成网络IO极大的浪费,所以我们需要用户Redis…

Leetcode3036. 匹配模式数组的子数组数目 II

Every day a Leetcode 题目来源:3036. 匹配模式数组的子数组数目 II 解法1:KMP 设数组 nums 的长度为 m,数组 pattern 的长度为 n。 遍历数组 nums 的每个长度是 n1 的子数组并计算子数组的模式,然后与数组 pattern 比较&…

JavaScript 设计模式之观察者模式

观察者模式 观察者模式又被称为发布-订阅模式,使用一个对象来收集订阅者,在发布时遍历所有订阅者,然后将信息传递给订阅者,可以这样来实现一个简单的模式 const Observable (function () {let __messages {}return {register:…

win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程

本篇文章主要讲解:win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程 日期:2024年2月22日 作者:任聪聪 一、mysql5.7版本的下载 官方下载地址:https://downloads.mysql.com/archives/community/ 步骤…

服务器生信环境配置脚本

服务器生信环境配置脚本的重要性在于它为生物信息学的数据分析提供了一个统一和标准化的计算环境。通过自动化的配置脚本,可以快速地在服务器上部署和设置生物信息学的软件和依赖库,确保分析的可重复性和准确性。这样,生物信息学家和研究人员…