vue3学习三
五 计算属性
定义
选项式
export default {data(){return {num:1}},computed:{num1(){this.num+=1}}
}
组合式
import {ref,computed} from 'vue'let num=ref(0);
//仅读
let num1 = computed(()=>{return num.value+=1
})
计算时依赖的变量数据发生变化,则计算属性值发生变化。
计算时依赖的变量数据没有发生变化,则使用缓存数据,不再重新计算。
方法计算的值没有缓存,即选项式中methods、组合式function中没有使用缓存,每次都会重新计算。
若根据大量数据计算出数据,推荐使用计算属性。
修改
和改变逻辑依赖变量导致计算结果不同,通过改计算属性结果修改其依赖的变量。
计算属性定义的对象为响应式对象,为ref形式的对象,但是其value属性为只读属性。
get函数读操作触发,set函数写操作出发。
//可读 可写
let num1 = computed({//读属性get(){return num.value+=1},//写属性set(value){num.value = value}})
六 监视watch
官网:https://cn.vuejs.org/guide/essentials/watchers.html
watch监视数据的变化,与vue2中作用一致。
监视数据类型:
- ref定义的数据
- reactive定义的数据
- 函数返回值(getter函数)
- 包含上述内容的数组
监视ref定义基本类型数据
watch第一个参数为响应式对象,而不是其值。
watch监视ref定义的数据,使用stopWatch()取消监视。
import {ref,watch} from 'vue'
let num = ref(0)
function changenum(){num.value+=1
}
let num_watch = watch(num,(newvalue,oldvalue)=>{console.log(newvalue,oldvalue)if(newvalue >= 2){stopWatch()//取消监视}
})
监视ref定义的对象类型数据
监视整个对象时,仅修改vlaue中属性,监视不会被触发,但是修改整个value属性监视会被触发。
开启深度监视,可以监视到value中属性。
watch中第三个对象参数,做为配置项:
- deep:true 深度监视,在 Vue 3.5+ 中,
deep
选项还可以是一个数字,表示最大遍历深度——即 Vue 应该遍历对象嵌套属性的级数 - immediate:true 立即监视,先执行监视
- once: true 一次性监听器,仅支持 3.4 及以上版本
import {ref,watch} from 'vue'
let item = ref({title:"11",sort:1
})
function changetitle(){item.value.title+="~"
}
function changesort(value){item.value.sort+="~"
}
function changeitem(){item.value = {title:"12",sort:2}
}
watch(item,(newvalue,oldvalue)=>{console.log('watch1',newvalue,oldvalue)
})watch(item,(newvalue,oldvalue)=>{console.log('watch2',newvalue,oldvalue)},{deep:true//开启深度监视}
)
newvalue和oldvalue指的是对象的引用地址,所以引用地址不变,即不定义为新对象数据,其都指向一个地址,所以俩值相同。
监视recative定义的对象类型数据
监视整个对象时,默认开启深度监视,修改对象中的属性,也会被监视。
这种深度监视不可关闭,即deep:false无效果。
import {reactive,watch} from 'vue'
let item=reactive({title:"title",sort:1
})
function changetitle(){item.title+="~"
}
function changeitem(){let new_item = {title:"title1",sort:2}Object.assign(item,new_item)
}
watch(item,(newvalue,oldvalue)=>{console.log(newvalue,oldvalue)
},{deep:false})
不管修改整个对象或者单个属性,newvalue和oldvalue都相同,道理同上。
监视getter数据
监视的数据不是对象类型,使用getter。
getter即匿名方法中返回要监听的值,可用于监听对象中的某个属性。
import {ref,reactive,watch} from 'vue'
let item=reactive({title:"title",sort:1,books:{b1:"123",b2:"qwe"}
})
function changetitle(){item.title+="~"
}watch(()=>{return item.title},(newv,oldv)=>{console.log(newv,oldv)
})
仅修改title时会触发监听。
newv为改后的值,oldv为改后的值。
因为监视的为单个数据,修改内容为原内容副本,数据前后地址会变,所以修改前后的值不同。
function changebooks(){item.books = {b1:"test1",b2:"test2"}
}function changebook1(){item.books.b1+="~"
}watch(item.books,(newv,oldv)=>{console.log("watch2",newv,oldv)
})watch(()=>item.books,(newv,oldv)=>{console.log("watch3",newv,oldv)
})watch(()=>item.books,(newv,oldv)=>{console.log("watch4",newv,oldv)
},{deep:true})
若监听reactive对象中的嵌套的对象,建议也用函数式,否则修改对象地址之后监视不到。
像代码中changebook1会输出watch2、watch4,changebooks中整个对象修改会输出watch3。
所以监视reactive对象或ref对象中嵌套的对象,最好使用getter和深度监视。
监视多个数据
监视多个属性,传递数组。
非对对象属性使用getter,对象属性直接使用。
import {ref,reactive,watch} from 'vue'
let item=reactive({title:"title",sort:1,books:{b1:"123",b2:"qwe"}
})
function changetitle(){item.title+="~"
}
function changesort(){item.sort+=2
}
function changebook1(){item.books.b1+="~"
}
watch([()=>item.title,()=>item.sort],(newv,newo)=>{console.log("watch5")console.log(newv,newo)
})
如代码所示,执行changetitle、changesort、changetest1监视都会被执行,但执行changebook1监视不会被执行。
返回的newv和newo都是数组,数组值和参数的位置相对应。
相关文章:
vue3学习三
五 计算属性 定义 选项式 export default {data(){return {num:1}},computed:{num1(){this.num1}} } 组合式 import {ref,computed} from vuelet numref(0); //仅读 let num1 computed(()>{return num.value1 }) 计算时依赖的变量数据发生变化,则计算属性…...

彻底理解JVM类加载机制
文章目录 一、类加载器和双亲委派机制1.1、类加载器1.2、双亲委派机制1.3、自定义类加载器1.4、打破双亲委派机制 二、类的加载 图片来源:图灵学院 由上图可知,创建对象,执行其中的方法,在java层面,最重要的有获取…...
【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
在计算机体系结构中,Core 和 Uncore 是描述处理器内部架构的两个重要概念,尤其在多核处理器中更为常见。 1. Core(核心) Core 指的是处理器中的计算核心,是执行指令和处理数据的基本单元。每个核心都包含独立的执行单…...

鸿蒙打包发布
HarmonyOS应用/元服务发布(打包发布) https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-publish-app-V13?catalogVersionV13 密钥:包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式…...
vue2:实现上下两栏布局,可拖拽改变高度
要拖拽改变两栏高度,那么总高度要确定,在拖拽的过程中,实时根据光标位置计算两栏高度,所以: 1、最外层有一个box, 高度是屏幕高度screenHeight; 2、该值在页面挂载时获取初始值(window.innerHeight-100),这里减少100,因为窗口上面有工具栏; 3、监听窗口resize事件…...
MongoDB 学习指南:深入探索非关系型数据库
MongoDB学习资料 MongoDB学习资料 MongoDB学习资料 在当今数字化时代,数据量呈爆炸式增长,数据结构也变得愈发复杂多样。传统的关系型数据库在处理一些大规模、高并发以及非结构化数据时,逐渐显露出局限性。而 MongoDB 作为一款领先的非关系…...

天机学堂3-ES+Caffeine
文章目录 day05-问答系统表 用户端分页查询问题目标效果代码实现 3.6.管理端分页查询问题ES相关 管理端互动问题分页实现三级分类3.6.5.2.多级缓存3.6.5.3.CaffeineTODO:使用Caffeine作为本地缓存,另外使用redis或者memcache作为分布式缓存,构…...

FPGA车牌识别
基于FPGA的车牌识别主要包含以下几个步骤:图像采集、颜色空间转换、边缘检测、形态学处理(腐蚀和膨胀)、特征值提取、模板匹配、结果显示。先用matlab对原理进行仿真,后用vivado和modelsim进行设计和仿真。 一、1.图像采集采用ov…...
Pandas库的常用内容归纳
Pandas 是一个强大的 Python 数据分析库,提供了大量用于数据处理和分析的功能。以下是一些 Pandas 库中常用的功能: 数据创建和操作 Series 和 DataFrame:创建一维的 Series 和二维的 DataFrame 对象。数据导入:从 CSV、Excel、…...
R语言的并发编程
R语言的并发编程 引言 在现代计算中,如何有效地利用计算资源进行数据处理和分析已成为一个重要的研究方向。尤其在大数据时代,数据量的急剧增加让单线程处理方式显得力不从心。为了解决这一问题,各种编程语言都开展了并发编程的研究和应用。…...

STM32 FreeRTOS中断管理
目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…...

数据结构-栈和队列
文章目录 一、栈1.概念与结构2.数组栈的实现2.1 栈的结构定义2.2 栈的初始化2.3 栈的销毁2.4 栈的判空2.5 栈的入栈2.6 栈的出栈2.7 查看栈顶元素2.8 栈的大小 3.两种栈的图示结构 二、队列1.概念与结构2.链式队列的实现2.1 队列的结构定义2.2 队列的初始化2.3 队列的销毁2.4 队…...

RabbitMQ---TTL与死信
(一)TTL 1.TTL概念 TTL又叫过期时间 RabbitMQ可以对队列和消息设置TTL,当消息到达过期时间还没有被消费时就会自动删除 注:这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身,不是说队列过期时间…...

第4章 Kafka核心API——Kafka客户端操作
Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API...

Python爬虫学习前传 —— Python从安装到学会一站式服务
早上好啊,大佬们。我们的python基础内容的这一篇终于写好了,啪唧啪唧啪唧…… 说实话,这一篇确实写了很久,一方面是在忙其他几个专栏的内容,再加上生活学业上的事儿,确实精力有限,另一方面&…...

Lora理解QLoRA
Parameter-Efficient Fine-Tuning (PEFT) :节约开销的做法,fine-tune少量参数,而不是整个模型; Low-Rank Adaptation (LoRA) :是PEFT的一种;冻结原参数矩阵,只更新2个小参数矩阵。 原文经过对比…...
Linux测试处理fps为30、1920*1080、一分钟的视频性能
前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…...

Flink (六):DataStream API (三) 窗口
1. 窗口 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 下面展示了 Flink 窗口在 keyed streams 和 non-keyed streams 上使用的基本结构。 我们可以看到,这两者唯一的…...
MYSQL学习笔记(二):基本的SELECT语句使用(基本、条件、聚合函数查询)
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是讲解SELECT语句使用,包括基本、条件、聚合函数查询,…...

PCL 点到面的ICP算法实现点云配准(C++详细过程版)
ICP算法 一、算法原理1、算法概述2、实现流程3、参考文献二、代码实现三、结果展示四、相关链接一、算法原理 1、算法概述 实现的算法与 PCL 点到面的ICP精配准(线性最小二乘优化)一文相同,使用C++代码复现线性优化的求解过程,求解过程如下所示,由于原版英文文献的计算过…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...