Vue3中的computed,watch和watchEffect的特点

news2024/11/18 14:28:47

1.computed
1)computed拥有缓存性,多次调用会直接从缓存中获取,而不会重新执行,所以说computed性能很高。
例:下面是同时调用三次计算属性firstTotal和三次函数firstTotalFun()的运行结果。可以发现,函数被执行了三次,而计算属性只被执行了一次。
在这里插入图片描述
代码:

<template>
	<view class="container">
	<view class="item">
		<view>商品:</view>
		<input type="text" v-model="firstGoods">
	</view>
	<view class="item">
		<view>价格:</view>
		<input type="text" v-model="firstPrice">
	</view>
	<view class="item">
		<view>数量:</view>
		<input type="text" v-model="firstNum">
	</view>
	<view class="item">
		<view>总价格:</view>
		<view>{{firstTotal}}, {{firstTotalFun()}}</view>
		<view>{{firstTotal}}, {{firstTotalFun()}}</view>
		<view>{{firstTotal}}, {{firstTotalFun()}}</view>
	</view>
	</view>
</template>
<script setup>
import { computed,ref } from 'vue';
let firstNum = ref(0)
let firstGoods = ref('')
let firstPrice = ref(0)
//计算属性
const firstTotal = computed(()=>{console.log("computed调用了");
 return firstPrice.value*firstNum.value})
 //普通函数
const firstTotalFun = ()=>{
	console.log("Function调用了")
	return firstPrice.value*firstNum.value
}
</script>

2)computed是只读的,不要去修改它,会报警告。
结果:
在这里插入图片描述
代码:
在这里插入图片描述
3) computed只能进行同步操作
4)computed在页面初始化加载的时候就会被立刻调用

2.watch
1)watch可以监听到前一次的值和最新值。
结果:
在这里插入图片描述
代码:

let firstWatch = ref(0);
watch(firstWatch, (newValue,oldValue)=>{
	console.log("调用了watch:",newValue,oldValue)
});

2)如果需要监听对象类型具体属性的变化,需要设置deep:true,或者使用 “对象.value”。如下:

let goods = ref({name:'',price:0,num:0});
//法一:
watch(goods, (newValue,oldValue)=>{
	console.log("调用了watch:",newValue,oldValue)
},{deep:true});
//法二:
watch(goods.value, (newValue,oldValue)=>{
	console.log("调用了watch:",newValue,oldValue)
};

运行结果:
在这里插入图片描述
3)watch属性可以使用异步。(call一些api)
4) watch在页面初始化加载的时候不会被立刻调用,只有在监听的数据发生变化的时候才会调用。如果想要让他立刻调用可以添加immediate: true

watch(
  source,
  (newValue, oldValue) => {
    // 初始化的时候执行,且当 `source` 改变时再次执行
  },
  { immediate: true }
)
  1. watchEffect
    1)watchEffect资料上说不需要指定具体属性,只要是watchEffect里面使用的数据,都可以进行深层次的监听(可以监听到对象中每个属性的变化)。但是经过测试,发现只会监听使用到的引用类型的具体的属性,如下图代码,我在watchEffect方法中打印了goods.value和goods.value.name,但只有当我在name输入框中输入数据的时候才会出现打印结果,price,和num输入框都无法触发监听。不知为啥,欢迎交流。
let goods = ref({name:'',price:0,num:0});
watchEffect(()=>{
	console.log("调用了watchEffect",goods.value.name,goods.value)
})

在这里插入图片描述
2) 可以进行异步操作
3)在页面初始化加载的时候会被立刻调用

补充:
一般多个属性变化,会影响到一个属性的时候用computed。computed不可以使用异步。
一般有一个属性变化,会影响到其它很多地方的时候使用watch。watch可以使用异步。

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

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

相关文章

免费微信小程序源码分享~搭起来改一下就可以【创业】

【前言】现在很多人都想做微信小程序创业搞钱&#xff0c;但是苦于不会开发或过高的开发成本只能放弃&#xff0c;下面我收集了几套微信小程序的源码供各位有梦想的同学免费使用~ 这些小程序代码都包含了客户端和管理端&#xff0c;你搭建起来就可以开始创业搞钱了~ 下载链接&…

基于SpringBoot+Vue共享客栈管理系统(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(9)复发

PS从入门到精通视频各类教程整理全集&#xff0c;包含素材、作业等 最新PS以及插件合集&#xff0c;可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制&#xff0c;今天先分享到这里&#xff0c;后续持续更新 第一课 ——第三课素材文件 https://www.alipan.c…

设计模式总结-装饰者模式

模式动机 一般有两种方式可以实现给一个类或对象增加行为&#xff1a; 继承机制&#xff0c;使用继承机制是给现有类添加功能的一种有效途径&#xff0c;通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的&#xff0c;用户不能控制增…

Java快速入门系列-5(Java进阶特性)

第五章:Java进阶特性 5.1 多线程与并发编程5.1.1 多线程基础5.1.2 线程同步与锁5.1.3 线程间通信与协作5.1.4 线程池5.2 Java I/O流5.2.1 字节流与字符流5.2.2 缓冲流5.2.3 对象序列化与反序列化5.3 网络编程基础5.3.1 Socket编程5.3.2 NIO编程5.4 Java反射机制反射的基本用法…

IDEA+Docker远程一键部署SpringBoot项目

一.引语 本文将学习使用IDEADocker远程一键部署SpringBoot项目&#xff0c;对比上传jar包到服务器&#xff0c;再通过java指令运行项目&#xff0c;极大程度的提高了项目部署效率。可谓不用不知道&#xff0c;一用再也停不下来~ 为了后续学习方便&#xff0c;需要提前进行如下…

leetcode.206.反转链表

题目 题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 双指针:创建指针p,curr&#xff0c;初始分别指向null和头节点&#xff0c;每轮循环移动一个节点的指向&#xff0c;直到指到最后一…

先登杯·14天创作挑战营·第④期~ 等你来战!

文章目录 ⭐️ 活动介绍⭐️ 活动详情⭐️ 活动奖品⭐️ 活动流程​⭐️ 评审规则⭐️ 报名&投稿注意事项⭐️ 活动组织 ​ 活动报名入口&#xff1a;https://bbs.csdn.net/topics/618374514 本次活动与官方活动及其他博主的创作型活动并不冲突&#xff01; ​ ​ ⭐️…

非conda环境(powershell与cmd)使用opencv-python库

1.安装python 3.11.7 Python Release Python 3.11.7 | Python.org 安装成功后,查看版本为3.11.7 2.安装numpy pip install numpy 3.安装matplotlib pip install matplotlib matplotlib库安装成功

东方博宜 1231. 考试成绩的分布情况

东方博宜 1231. 考试成绩的分布情况 #include<iostream> #include<iomanip> using namespace std; int main() {int n ;cin >> n ;int a[101] ;for(int i 0 ; i < n ; i){cin >> a[i] ;}double sum ;sum 0 ;for(int j 0 ; j < n ; j){sum …

Going deeper with Image Transformers

1、引言 论文链接&#xff1a; https://openaccess.thecvf.com/content/ICCV2021/papers/Touvron_Going_Deeper_With_Image_Transformers_ICCV_2021_paper.pdf 由于目前对图像 Transformer[1] 的优化问题研究很少&#xff0c;Hugo Touvron 等[2] 构建和优化了更深的用于图像分…

03-JAVA设计模式-单例模式详解

单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是设计模式中的一种&#xff0c;它确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来访问该实例。这种设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 单例模式的应用场景十分广泛…

专题三——二分算法

目录 原理 模板 朴素二分算法 非朴素二分算法 一二分查找 二在排序数组中查找元素的第一个和最后一个位置 三点名 四x的平方根 五搜索插入位置 六山脉数组的峰顶索引 七寻找峰值 八寻找旋转排序数组中的最小值 原理 定义两个指针&#xff1a;left指向数组第一个元…

实景三维在文化旅游领域的应用

实景三维技术&#xff0c;作为一种前沿的科技手段&#xff0c;近年来在文化旅游领域的应用逐渐崭露头角。它能够将真实世界的场景以三维的形式精确呈现&#xff0c;为游客带来身临其境的体验&#xff0c;为文化旅游注入新的活力。本文将探讨实景三维在文化旅游领域的应用及其所…

编程新手必看,学习python中数字数据类型内容(7)

Python中的数字数据类型主要包括以下几种&#xff1a; 整数&#xff08;int&#xff09;&#xff1a;这是最基本的数字类型&#xff0c;用于表示整数值&#xff0c;如1、-5和1000等。在Python中&#xff0c;整数可以处理任意大小的数值&#xff0c;并且支持多种数学运算。 浮点…

Windows与Linux路径分隔符对比及Java代码实战

在Windows中&#xff0c;磁盘中用反斜杠&#xff08;又称为右斜杠&#xff09;\表示路径的分隔。在浏览器中用正斜杠/来表示路径的分隔。 Linux则是统一用/表示路径的分隔的。下面给出Linux中一些常见的路径表示&#xff1a; / 表示根目录./ 表示当前目录…/ 表示上级目录 …

【C++】C++中的stack和queue

一、概述 本篇blog写明了介绍的是STL(标准模板库)中的stack和queue&#xff0c;栈和队列虽然在处理数据的方式上有明显的不同&#xff0c;但它们作为操作受限的线性数据结构&#xff0c;在学习和应用中经常被放在一起讨论&#xff0c;以便更全面地理解数据结构的概念和使用。 在…

Windows瘦客户机专用系统安装教程

前言 小白偶然看到微软有给瘦客户机定制了专用系统Windows Thin PC x86。 从名字就可以看出来&#xff0c;瘦客户机的系统是32位的&#xff0c;安装完系统之后可以用来干啥&#xff0c;咱们很多小伙伴估计都不清楚。 首先要了解&#xff1a;什么是瘦客户机&#xff1f; 瘦客户…

逐步学习Go-WaitGroup【连字都懒得写了,直接Show my Code】

package waitgroup_testimport ("fmt""runtime""sync""testing""time""github.com/stretchr/testify/assert" )// 这是对Go语标准库中sync包下的WaitGroup的描述。// WaitGroup用于等待一组并发的goroutine结结束…

争相上市,黑芝麻智能和地平线,能突出重围吗?

图片&#xff5c;freeflo.ai ©自象限原创 作者丨罗辑 中国最有代表性两家自动驾驶大算力芯片&#xff08;SoC&#xff09;公司在港交所相遇了。 3月23日&#xff0c;黑芝麻智能向港交所递交主板上市申请&#xff1b;3天之后&#xff0c;地平线也向港交所递交了招股书。…