Vue计算属性computed和监听watch
1.计算属性
初衷:为了解决模块里面有太多的计算逻辑让模版难以维护。
计算属性可以依赖一个数据也可以依赖多个数据的变化
使用场景:
商品单价和数量改变时,商品总价更改。如果写在方法里面,那么每次修改商品单价和数量时都会去调用这个方法,这种每次去调用都会消耗一部分性能,对页面渲染并不友好。所以就可以使用计算属性,计算属性可以使用缓存
2.计算属性的setter
计算属性不能在外部直接进行赋值,如果想要给计算属性赋值,就需要使用set/get方法,而且计算属性里面使用对象写法。
如购物车里面商品,全选按钮会根据商品是否全选中来决定是否被选中
<el-checkbox size="mini" v-model="checkedAll"></el-checkbox>checkedAll: {get() {return this.cartProducts.every(item => item.isChecked);},set(newVal) {this.cartProducts.map(item => (item.isChecked = newVal));}}
3.计算属性的特性
1. 计算属性会被加入到vue实例
2. 计算属性所依赖的数据未发生变化,结果会被缓存(缓存依赖于数据的变化,数据没有变化不会缓存),下一次页面更新时首先会查看数据是否变化,如果没有变化不会触发computed函数会直接读取缓存的内容
4.watch监听器
监听器适用于数据发生改变时做一些副作用相关的处理
5.watch相关api
- 可以监听data数据中的变量;
- 监听属性的方法,可以是methods里的方法名;
- 可以使用deep:true对对象进行深度监听
- 可以使用immediate: true在页面首次加载时就触发
- 可以传入回调数组,它们会被按顺序逐一调用
- 可以只监听对象的某个属性 obj.a
var vm = new Vue({data: {a: 1,b: 2,c: 3,d: 4,e: {f: {g: 5}}},watch: {a: function (val, oldVal) {console.log('new: %s, old: %s', val, oldVal)},// 方法名b: 'someMethod',// 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深(对对象的深度监听)c: {handler: function (val, oldVal) { /* ... */ },deep: true},// 该回调将会在侦听开始之后被立即调用(页面加载时就触发)d: {handler: 'someMethod',immediate: true},// 你可以传入回调数组,它们会被按顺序逐一调用e: ['handle1',function handle2 (val, oldVal) { /* ... */ },{handler: function handle3 (val, oldVal) { /* ... */ },/* ... */}],// watch vm.e.f's value: {g: 5}(只监听对象的某个属性)'e.f': function (val, oldVal) { /* ... */ }},methods:{someMethod(){console.log("methods方法中监听");}}
})
vm.a = 2 // => new: 2, old: 1
6.watch可以处理异步
watch内部可以处理异步相关逻辑
7.计算属性computed和监听watch的区别
- 计算属性会进行缓存,缓存是由数据变化决定。在页面下一次更新时,首先会查看里面的字段是否有变化,如果字段没有变化,则不会触发会computed函数从上一次缓存中读取数据;而watch不会进行缓存;
- 计算属性computed因为有return所以不能处理异步相关逻辑;而watch可以处理异步相关逻辑
- computed首次加载就会触发缓存里面的内容,但是watch如果要首次加载就触发需要使用immediate:true属性;
- computed会对对象进行深度监听,但是如果watch想进行深度监听需要使用deep:true属性
相关文章:
Vue计算属性computed和监听watch
1.计算属性 初衷:为了解决模块里面有太多的计算逻辑让模版难以维护。 计算属性可以依赖一个数据也可以依赖多个数据的变化 使用场景: 商品单价和数量改变时,商品总价更改。如果写在方法里面,那么每次修改商品单价和数量时都会…...
HTTP介绍 原理 消息结构 客户端请求 服务器响应 HTTP状态码
一、HTTP介绍二、HTTP工作原理HTTP三点注意事项 三、HTTP消息结构四、客户端请求消息五、服务器响应消息HTTP请求方法 七、HTTP响应头信息八、HTTP状态码(HTTP Status Code)下面是常见的HTTP状态码:HTTP状态码分类HTTP状态码列表 一、HTTP介绍…...
linux性能分析(五)如何学习linux性能优化
一 如何学习linux性能优化 强调: 由于知识记忆曲线以及某些知识点不常用,所以一定要注重复习思考: 如何进行能力转义以及能力嫁接? --> 真正站在巨人的肩膀上性能调优的目的: 不影响系统稳定性的资源最大利用化补充: 性能…...
1402. 做菜顺序 --力扣 --JAVA
题目 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i…...
Springboot踩坑-request body重复读问题
背景 在一次业务开发中,由于需要在拦截器中对一个http请求中request body内容做解析和判断,所以用了httpServletRequest的getInputStream解析了request body内容,之后导致了拦截器处理成功后,原来的业务接口处报request body not…...
C++ 类和对象(六)赋值运算符重载
1 运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数, 也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 函数名字为:关键字operator后面接需…...
rust学习-trait std::cmp::PartialEq、Eq、PartialOrd、Ord
PartialEq 介绍 pub trait PartialEq<Rhs = Self> whereRhs: ?Sized, {// Required method,后文有讲解这个注释fn eq(&self, other: &Rhs) -> bool;// Provided method,后文有讲解这个注释fn ne(&self, other: &Rhs) -> bool {... } }x.eq(y)…...
k8s pod根据指标自动扩缩容举例
目录 基于 内存 指标实现pod自动扩缩容 举例配置 基于 cpu 指标实现pod自动扩缩容 举例配置 基于请求数(次/秒) 指标实现pod自动扩缩容 举例配置 基于 http请求响应时间 (ms) 指标实现pod自动扩缩容 举例配置 基于 Java GC暂停时间 (ms) 指标实现…...
深、浅拷贝之间的关系
深、浅拷贝之间的关系 什么是赋值 赋值是将某一数值或对象赋给某个变量的过程,分为下面 2 部分 基本数据类型:赋值,赋值之后两个变量互不影响引用数据类型:赋址,两个变量具有相同的引用,指向同一个对象&…...
服务器数据恢复-某银行服务器硬盘数据恢复案例
服务器故障&分析: 某银行的某一业务模块崩溃,无法正常使用。排查服务器故障,发现运行该业务模块的服务器中多块硬盘离线,导致上层应用崩溃。 故障服务器内多块硬盘掉线,硬盘掉线数量超过服务器raid阵列冗余级别所允…...
仪器器材经营小程序商城的作用是什么
互联网发展下,数字化转型已经成为常态,仅依赖传统线下经营模式将很难再增长。 作为产品销售及客户维护度高的仪器器材行业,拥有自营商城平台是必要的,不仅可以解决以上难题,还利于打造自身品牌多渠道传播,…...
京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!
鲸参谋监测的京东平台9月份洗烘套装市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台洗烘套装的销量为7100,环比下降约37%,同比增长约87%;销售额为6000万,环比下降约48%&#…...
论文阅读-多目标强化学习-envelope MOQ-learning
introduction 一种多目标强化学习算法,来自2019 Nips《A Generalized Algorithm for Multi-Objective Reinforcement Learning and Policy Adaptation》本文引用代码全部来源于论文中的链接。主要参考run_e3c_double.py文件 1 总体思想 1.将输入中加入多目标的偏…...
【原创】【考法总结】指针*与++结合的题目考法总结
代码均已调试出结果,放心食用,大致总共5种考法 【理论铺垫】①a[i]恒等价于(ai)即*(&a[0]i);i类似偏移量(别忘a代表数组首元素地址即&a[0]) ②*(&a[i])恒等价于a[i]:&a[i]表示a[i]的地址&a…...
react dispatch不生效的坑
一、前言 最近写react antd项目,在A页面中使用了dispatch方法,然后B页面中嵌套A页面,没有问题; 但是在C页面中嵌套A页面的时候,就发现dispatch方法没有执行,也不报错,就很奇怪; 还…...
Mingw快捷安装教程 并完美解决出现的下载错误:The file has been downloaded incorrectly
安装c语言编译器的时候,老是出现The file has been downloaded incorrectly,真的让人 直接去官网拿压缩包:https://sourceforge.net/projects/mingw-w64/files/ (往下拉找到那个x86_64-win32-seh的链接,点击后会自动…...
OpenGL —— 2.6、绘制一个正方体并贴图(附源码,glfw+glad)
源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库,该库只有一个头文件。 具体代码: vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _viewMatrix; u…...
JavaWeb从入门到起飞笔记——导学课程
学完这一节,我不知道学Web开发究竟能干什么?你知道吗? 以下是黑马程序员Java从入门到起飞的笔记 一、学完Javaweb能干什么? 学完Java后我们可以独立开发一些后台管理系统,例如CRMER器,京东和淘宝&#x…...
【LeetCode:1402. 做菜顺序 | 动态规划 + 贪心】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
基于FPGA的图像拉普拉斯变换实现,包括tb测试文件和MATLAB辅助验证
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…...
从VXLAN到MPLS:数据中心网络为什么需要调大MTU值?9000字节配置实战
数据中心网络MTU优化实战:从1500到9000字节的跨越 在云计算和虚拟化技术蓬勃发展的今天,数据中心网络架构正经历着前所未有的变革。传统以太网1500字节的MTU(最大传输单元)标准,在面对VXLAN、MPLS等现代网络技术时显得…...
数学驱动自研:Deepoc 数学大模型支撑半导体全链路研发升级
面向半导体先进工艺与自主化发展需求,传统研发模式在精度、效率与成本上面临多重挑战。Deepoc 数学大模型以严谨数值计算、符号推理与全流程建模能力,为芯片设计、仿真、工艺、封测提供统一数学底层支撑,用系统化计算辅助产业研发决策&#x…...
从课堂到竞赛:拆解一个真实可用的智力抢答器电路(含Multisim仿真文件)
从课堂到竞赛:打造高可靠性智力抢答器的工程实践 在校园科技节或企业知识竞赛中,一个反应灵敏、运行稳定的抢答器往往是决定活动成败的关键设备。许多电子爱好者都尝试过基于74系列芯片搭建抢答电路,但将课堂仿真转化为实际可用的竞赛设备&am…...
3分钟学会Ofd2Pdf:终极免费OFD转PDF解决方案指南
3分钟学会Ofd2Pdf:终极免费OFD转PDF解决方案指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf Ofd2Pdf是一款专为中国用户设计的开源工具,能够快速、无损地将OFD格式电子文档…...
告别卡顿!手把手教你将TUM RGBD的tgz包转成30Hz流畅bag文件(附Python脚本)
告别卡顿!手把手教你将TUM RGBD的tgz包转成30Hz流畅bag文件(附Python脚本) 如果你正在使用TUM RGBD数据集进行SLAM或三维重建开发,一定遇到过官方提供的bag文件卡顿问题。原始15Hz的帧率在实时性要求高的场景下表现不佳࿰…...
5大核心模块:重新定义英雄联盟游戏辅助体验
5大核心模块:重新定义英雄联盟游戏辅助体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于LCU API开发的英…...
Cosmos-Reason1-7B多场景落地:数学证明、算法推导、LeetCode解析一体化
Cosmos-Reason1-7B多场景落地:数学证明、算法推导、LeetCode解析一体化 1. 工具概览:你的本地推理助手 Cosmos-Reason1-7B是一个专门为推理任务设计的本地大语言模型工具。它基于NVIDIA官方发布的Cosmos-Reason1-7B模型开发,针对数学证明、…...
Intv_AI_MK11在操作系统教学中的应用:交互式概念学习与实验指导
Intv_AI_MK11在操作系统教学中的应用:交互式概念学习与实验指导 1. 操作系统教学的现状与挑战 操作系统课程作为计算机专业的核心课程,长期以来面临着理论抽象、实践门槛高的教学困境。传统教学模式下,学生往往陷入"听得懂概念但不会动…...
Milvus vs ElasticSearch实战对比:从零搭建到性能测试全记录(附避坑指南)
Milvus vs ElasticSearch实战对比:从零搭建到性能测试全记录(附避坑指南) 在AI应用开发领域,向量数据库的选择往往决定了整个系统的性能上限。当开发者面临Milvus和ElasticSearch这两个主流选项时,如何根据实际业务需…...
3步解锁Audiveris:从乐谱照片到数字音乐的智能转换秘籍
3步解锁Audiveris:从乐谱照片到数字音乐的智能转换秘籍 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris 还在为整理纸质乐谱而烦恼吗?想要将那些珍贵的音乐手稿快…...
