【vue3】基础知识点-computed和watch

news2024/11/24 19:18:20

学习vue3,都会从基础知识点学起。了解setup函数,ref,recative,watch、computed、pinia等如何使用

今天说vue3组合式api,computed和watch

在vue3中,computed和watch仍然是非常有用的特性,帮助处理响应式数据的变化和副作用

computed:

注意点:
1、应当用于计算和派生数据,并确保其返回值是一个响应式应用
2、避免在computed中进行异步操作,因为computed是同步求值的
3、computed会根据依赖项的变化进行缓存,只有在依赖项发生变化时才会重新计算
4、computed不应该有副作用,主要作用就是做计算,如果做了异步请求,修改DOM等那就是副作用
5、避免直接修改computed的值,默认情况下computed的值是只读的

优点:
1、简化代码,避免在模板区编写复杂的计算逻辑
2、响应式,会根据依赖项的变化自动更新最新的计算结果,保持视图与数据的同步

缺点:
1、依赖项过多,如果computed中的依赖项过多或复杂,可能会导致计算开销较大,影响性能

使用:
1、导入computed函数
2、执行函数,在回调参数中return基于响应式数据做计算的值,用变量接收

<script setup>
import {ref,computed} from 'vue'

const list = ref([1,2,3,4,5,6,7,8])

const computedList = computed(()=>{

return list.value.filter(item=>item>2)

//验证computed计算的数组变化时是否会重新计算

setTimeout(()=>{

list.value.push(9,10)

},3000)
})
</script>

<template>
  <div >
  原始响应数据-{{list}}
  </div>
    <div >
 计算属性数组-{{computedList }}
  </div>
</template>

在这里插入图片描述
3秒之后重新计算,computed会根据依赖项的变化自动更新最新的计算结果
在这里插入图片描述

watch:

注意点:
1、watch主要用于监听特定数据的变化,并执行副作用操作(例如:发起异步请求,更改DOM)
2、可以使用watch的返回函数来取消对数据的监听
优点:
1、灵活度高,watch可以监听多个数据的变化,可以执行异步操作,可以做更多的自定义处理
2、适应场景复杂:wacth适用于处理数据变化产生的副作用,例如:获取数据后执行其他操作
缺点:
1、代码较为复杂,相对于computed,watch的代码可能会更复杂,难以阅读和维护
使用:
1、导入watch函数
2、执行watch函数传入要监听的响应式数据(ref对象)和回调函数
例如:
//调用watch,监听单个数据源的变化

<script setup>
//导入watch
import {ref,watch} form 'vue'
const count = ref(0)
const setCount = ()=>{
count.value++
}

//ref对象不需要加.value,内部已经处理
watch(count,(newVal,oldVal)=>{
console.log('老值${oldVal},新值${newVal}')
})


</script>

//调用watch,监听多个数据源的变化,不管哪个数据发生变化都需要执行回调

<script setup>
//导入watch
import {ref,watch} form 'vue'
const count = ref(0)
const name = ref('zs')
//用数组的方式将所有要监听的数据都放进来
//回调函数中第一个数组为新值,第二个数组为旧值
watch([count,name],([newCount,newName],[oldCount,oldName])=>{
console.log('老值[oldCount,oldName],新值[newCount,newName]')
})

</script>

watch精确监听某个对象的特定属性
deep开启后会进行递归遍历,存在性能损耗。在不开启deep的前提下,监听对象的特定属性,只有特定属性发生变化才执行回调,将监听变成两个回调函数的写法
例如:

import {ref,watch} from 'vue'
cosnt info = ref({
name:'zs',
age:'18'
})

watch(
()=>info.value.age,
(newVal,oldVal)=>{'在此执行属性age相关的代码操作'}
)

ps:
ref()函数,如果传入的是简单类型数据

import { ref } from 'vue';

const count = ref(0);

console.log(count.value); // 输出 0

count.value = 1; // 修改包装后的值
console.log(count.value); // 输出 1

ref()函数,如果传入的是复杂类型数据

import { ref } from 'vue';

const person = ref({
  name: 'Alice',
  age: 25
});
//当值为对象类型,会用recative()自动转换它的value
//响应式替换
person.value = {
 name: 'Alice',
  age: 25
}
console.log(person.value.name); // 输出 'Alice'

// 修改复杂数据类型的某个属性
person.value.name = 'Bob';

console.log(person.value.name); // 输出 'Bob'

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

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

相关文章

【C语言】实现linux下基于C语言的一个简单的UDP客/服端通信

一、实例代码 对于基础好的朋友可以直接拿代码看 客户端代码&#xff1a; #include <stdio.h> #include <sys/socket.h>//socket() #include <netinet/in.h>//struct sockaddr_in #include <string.h>//memset() #include <arpa/inet.h>//ine…

数字化转型中的抉择:定制化软件还是引入PDM系统?

企业在数字化转型过程中可以考虑是使用定制化软件、基于成熟模块改造&#xff0c;或引入PDM&#xff08;产品数据管理&#xff09;系统&#xff0c;这时需要仔细权衡各种因素&#xff0c;以确保选择最适合其需求的路径。这些选择各自有其优势和适用场景&#xff0c;下面将分别对…

Linux项目部署

目录 一JAVAWeb环境的部署【安装JDK&#xff0c;MySQL数据库&#xff0c;Tomcat】 二.手工部署SpringBoot项目&#xff08;写的最好的&#xff09; 1.在IDEA中开发SpringBoot项目并打成jar包--点击右侧的Maven执行package命令 2.将jar包上传到Linux服务器 3.执行以下命令&a…

探究Spring事务:了解失效场景及应对策略

在现代软件开发中&#xff0c;数据的一致性和完整性是至关重要的。为了保证这些特性&#xff0c;Spring框架提供了强大的事务管理机制&#xff0c;让开发者能够更加自信地处理数据库操作。然而&#xff0c;事务并非银弹&#xff0c;存在一些失效的情景&#xff0c;本文将带您深…

C++ Visual Studio工程目录相对路径设置

文章目录 相对路径相对路径是相对vs工程的哪个目录而言书写格式 参考 相对路径 要设对相对路径&#xff0c;需要搞清楚下面两个问题&#xff1a; 相对路径是相对vs工程的哪个目录而言相对路径的书写格式 相对路径是相对vs工程的哪个目录而言 注意&#xff1a; 并非以解决方案…

LeetCode150道面试经典题-买卖股票的最佳时机(简单)

1、题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…

麻了!包含中科院TOP,共16本期刊被标记为“On Hold”状态!

近日&#xff0c;小编从科睿唯安旗下的“Master Journal List”官网查到&#xff0c;除了知名老牌期刊Chemosphere竟然被标记为“On Hold”状态&#xff0c;目前共有7本SCI期刊&#xff0c;1本SSCI期刊&#xff0c;8本ESCI期刊被标记为“On Hold”&#xff0c;究竟是怎么回事呢…

一篇Android 真实面经(干货满满)

如梦朦胧 从年初开始就一直有换工作的躁动&#xff0c;因某些原因而拖到了现在,然后投了某度的Android岗位,本以为像我这种非211、985没工作经验的渣渣只能被直接pass,结果却意外的收到了电话,真是受宠若惊.经过电面,技术三面,然后就是等通知到最后拿到了OFFER,如梦一般,真是挺…

python小程序代码50 到100行,python小程序代码100行

这篇文章主要介绍了python小程序代码50 到100行&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 目录 1.生成漂亮的樱花树2.绝美的静态樱花树3.魔法少女小圆动漫形象4.利用pyth…

【注册表】windows系统注册表常用修改方案

文章目录 ◆ 修改IE浏览器打印页面参数设置◆气泡屏幕保护◆彩带屏幕保护程序◆过滤IP(适用于WIN2000)◆禁止显示IE的地址栏◆禁止更改&#xff29;&#xff25;默认的检查(winnt适用)◆允许DHCP(winnt适用)◆局域网自动断开的时间(winnt适用)◆禁止使用“重置WEB设置”◆禁止更…

SHGetFileInfo函数获取48x48图标并在ListControl平铺视图中显示

VS2010工程下载链接&#xff1a;https://pan.baidu.com/s/1ACXQSpoNdFVFLdvWntT7mA?pwdwfy5 C语言写法&#xff1a; #define COBJMACROS #include <stdio.h> #include <Windows.h> #include <CommCtrl.h> #include <commoncontrols.h>HICON load_ic…

Cocos基本介绍

一、下载Dashboard Cocos Creator 3.8 手册 - 安装和启动 二、编辑器结构 1.资源管理器&#xff1a;显示了项目资源文件夹(assets)中的所有资源 2.场景编译器&#xff1a;用于展示和编辑场景中可是内容的工作区域 3.层级管理器&#xff1a;用树状列表的形式展示场景中的所有…

Linux文件读取

#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h>int main(int argc, char * * argv){printf("输入了参数个数&#xff1a;%d \n",argc);if (argc !3 ){printf("参数不…

系统架构设计专业技能 · 软件工程(一)【系统架构设计师】

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

python接口自动化之正则用例参数化

前言 ​ 我们在做接口自动化的时候&#xff0c;处理接口依赖的相关数据时&#xff0c;通常会使用正则表达式来进行提取相关的数据。 ​ 正则表达式&#xff0c;又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(Regular Expression&#xff0c;在代码中常简写…

目标检测YOLOv3基于DarkNet53模型测试-笔记

目标检测YOLOv3基于DarkNet53模型测试-笔记 预测和试测结果&#xff1a; 预测代码如下所示&#xff1a; testInsects.py #YOLOv3网模型测试-单图片文件测试并显示测试结果 import time import os import paddle import numpy as np import cv2 import random from PIL impor…

ROS实现自定义信息以及使用

常见的消息包 消息包定义一般如下&#x1f447; &#xff08;1&#xff09;创建包和依赖项 &#xff08;2&#xff09;在新建的qq_msgs的包新建msgs的文件夹&#xff0c;在该文件夹里面新建Carry.msg类型的文件。 其实&#xff0c;Carry.msg就是你自己定义的消息类型&am…

CentOS软件包管理rpm、yum

一、软件包概述 Linux常见软件包分为两种&#xff0c;分别是源代码包、二进制文件包。源代码包是没有经过编译的包&#xff0c;需要经过GCC、C编译器编译才能运行&#xff0c;文件内容包含源代码文件&#xff0c;通常以.tar.gz、.zip、.rar结尾&#xff1b;二进制包无需编译&am…

尚硅谷大数据项目《在线教育之采集系统》笔记003

视频地址&#xff1a;尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P036 P037 P038 P039 P041 P042 P043 P044 P045 P046 P036 先启动zookeeper&#xff0c;在启动kafka&#xff0c;启动hadoop中的hdfs node003启动flume&#xff0c;node001启动f…

用户稳定增长,拆解美团立足于“吃”的刚需价值

近期&#xff0c;QuestMobile发布了《中国移动互联网2023年上半年大报告》。报告显示&#xff0c;上半年&#xff0c;我国移动互联网月人均单日使用时长同比增长7.7%至7.2小时&#xff0c;移动互联网月活用户增长至12.13亿。 尽管在几年前&#xff0c;互联网流量触顶就已经成为…