vue2 - Day02 -计算属性(computed)、侦听器(watch)和方法(methods)
在 Vue.js 中,计算属性(computed)、侦听器(watch)和方法(methods)都是响应式的数据处理方式

文章目录
- 1. 方法(Methods)
- 1.1. 是什么
- 1.2. 怎么用
- 示例:
- 1.3. 特点
- 1.4. 使用场景
- 2. 计算属性(Computed)
- 2.1. 是什么
- 2.2. 怎么用
- 示例:
- 2.3. 特点
- 2.4. 使用场景
- 3. 侦听器(Watch)
- 3.1. 是什么
- 3.2. 怎么用
- 示例:
- 3.3. 特点
- 3.4. 使用场景
- 4. 计算属性、侦听器和方法的对比
- 5. 总结
1. 方法(Methods)
1.1. 是什么
在 Vue 中,方法(methods)是定义在 Vue 实例中的函数,用来处理一些动作或逻辑。它们可以通过事件绑定触发,也可以在代码中显式调用。每次方法被调用时,都会执行其中的逻辑,不会缓存计算结果。
1.2. 怎么用
方法通过 Vue 实例中的 methods 选项定义,可以通过事件触发(如 click、submit)或显式调用。
示例:
new Vue({el: '#app',data: {firstName: 'John',lastName: 'Doe'},methods: {fullName() {return this.firstName + ' ' + this.lastName;},greet() {alert('Hello, ' + this.firstName + '!');}}
});
<div id="app"><p>{{ fullName() }}</p> <!-- 调用 fullName 方法 --><button @click="greet()">Greet</button> <!-- 绑定事件,点击时调用 greet 方法 -->
</div>

1.3. 特点
- 每次调用都会执行:方法没有缓存机制,每次调用都会执行方法内部的逻辑,可能会有性能开销。
- 适合执行副作用:方法一般用于处理事件、交互、调用 API、执行动画等。
- 不能缓存:每次调用方法时,都会重新执行其中的代码。
- 适合函数逻辑:方法用于处理需要执行的业务逻辑,如响应用户输入、提交表单等。
- 不依赖于计算属性:方法与计算属性不同,它不关注其他属性的变化,因此不适用于根据响应式数据自动计算和返回结果的场景。
1.4. 使用场景
- 用于响应用户的输入事件、点击事件等交互,或者需要执行某些即时操作。
- 适用于没有缓存需求、每次都需要重新计算的场景。
2. 计算属性(Computed)
2.1. 是什么
计算属性(computed)是基于 Vue 实例中的响应式数据计算得来的属性。它的计算结果会被缓存,只有当它依赖的响应式数据发生变化时,计算属性才会重新计算。这使得计算属性非常适合用于基于数据的计算,并且能有效提升性能。
2.2. 怎么用
计算属性通过 Vue 实例中的 computed 选项定义,并像普通属性一样在模板中使用。你可以在 computed 中定义计算属性,Vue 会自动追踪它们依赖的数据,并在数据变化时重新计算。
示例:
new Vue({el: '#app',data: {firstName: 'John',lastName: 'Doe'},computed: {fullName() {return this.firstName + ' ' + this.lastName;}}
});
<div id="app"><p>{{ fullName }}</p> <!-- 使用计算属性 fullName -->
</div>
2.3. 特点
- 缓存机制:计算属性的值会缓存,只有当它的依赖(如
firstName和lastName)发生变化时,才会重新计算。若依赖数据没有变化,返回的值是缓存的。 - 自动更新:当依赖的数据发生变化时,计算属性会自动重新计算。
- 适合用于组合值:如合并字符串、计算价格、格式化日期等。
- 支持 getter 和 setter:计算属性不仅可以是 getter(获取值),还可以是 setter(设置值)。通过 setter 可以修改依赖的属性。
computed: {fullName: {get() {return this.firstName + ' ' + this.lastName;},set(newValue) {const names = newValue.split(' ');this.firstName = names[0];this.lastName = names[1] || '';}}
}
2.4. 使用场景
- 用于依赖其他响应式数据进行计算的场景,如组合数据、处理计算属性等。
- 适合需要缓存计算结果的场景,避免每次访问都重新计算。
3. 侦听器(Watch)
3.1. 是什么
侦听器(watch)用于观察 Vue 实例中的数据变化,并在数据变化时执行某些操作。侦听器非常适合用来处理需要执行副作用的操作,如异步请求、数据持久化或复杂逻辑的处理。
3.2. 怎么用
侦听器通过 Vue 实例中的 watch 选项定义,你可以指定一个数据属性或计算属性来监听,并在该属性发生变化时执行回调。
示例:
new Vue({el: '#app',data: {firstName: 'John',lastName: 'Doe'},watch: {firstName(newVal, oldVal) {console.log(`First name changed from ${oldVal} to ${newVal}`);}}
});
<div id="app"><input v-model="firstName" />
</div>
3.3. 特点
- 每次数据变化都会触发:侦听器会在目标数据发生变化时立即触发回调函数。
- 适用于副作用处理:侦听器通常用于处理异步操作或执行数据持久化等副作用操作。
- 可以监听复杂数据结构:侦听器不仅支持基本数据类型,还支持监听数组和对象的变化,甚至可以进行深度监听。
- 异步执行:侦听器的回调是异步执行的,不会阻塞页面的渲染。
watch: {// 深度监听对象user: {handler(newValue, oldValue) {console.log('User object changed');},deep: true}
}
3.4. 使用场景
- 需要对数据变化进行副作用处理时,如发起异步请求、保存到本地存储、触发动画等。
- 适合监听复杂数据变化(如对象或数组的变化),并在变化时执行逻辑。
4. 计算属性、侦听器和方法的对比
| 特性 | 方法(methods) | 计算属性(computed) | 侦听器(watch) |
|---|---|---|---|
| 缓存机制 | 不缓存,每次调用都会执行 | 有缓存,只有依赖的数据变化时才会重新计算 | 没有缓存,每次数据变化都会触发回调 |
| 适用场景 | 响应事件和执行逻辑 | 基于数据的计算与组合 | 监听数据变化并处理副作用操作 |
| 性能 | 性能较差,每次调用都会重新计算 | 性能较好,缓存计算结果 | 性能相对较差,依赖于回调逻辑的复杂度 |
| 是否适合副作用 | 适合处理事件和逻辑操作 | 不适合,计算属性不应包含副作用 | 适合用于执行副作用(如 API 请求、保存数据等) |
| 触发时机 | 每次调用都会触发 | 依赖的数据变化时触发 | 数据变化时触发 |
| 使用复杂度 | 简单直观,适合处理简单的逻辑 | 简单,适用于依赖数据的计算 | 适用于复杂数据监听及副作用处理 |
5. 总结
-
方法(Methods):适用于事件处理、用户交互和即时执行逻辑。每次调用都会重新执行,性能相对较低,不适合用于数据计算和组合。
-
计算属性(Computed):适用于基于其他数据计算并缓存的场景。能够避免不必要的重复计算,适合计算组合数据或派生数据。
-
侦听器(Watch):适用于数据变化时执行副作用操作,如异步请求、数据持久化等。可以监听对象和数组的变化,适合处理复杂的逻辑。
-
总结选择:
- 如果需要基于数据计算并缓存结果,使用计算属性。
- 如果要响应事件或执行即时操作,使用方法。
- 如果需要监听数据
相关文章:
vue2 - Day02 -计算属性(computed)、侦听器(watch)和方法(methods)
在 Vue.js 中,计算属性(computed)、侦听器(watch)和方法(methods)都是响应式的数据处理方式 文章目录 1. 方法(Methods)1.1. 是什么1.2. 怎么用示例: 1.3. 特…...
Linux C 程序 【05】异步写文件
1.开发背景 Linux 系统提供了各种外设的控制方式,其中包括文件的读写,存储文件的介质可以是 SSD 固态硬盘或者是 EMMC 等。 其中常用的写文件方式是同步写操作,但是如果是写大文件会对 CPU 造成比较大的负荷,采用异步写的方式比较…...
Liveweb视频汇聚平台支持WebRTC协议赋能H.265视频流畅传输
随着科技的飞速发展和网络技术的不断革新,视频监控已经广泛应用于社会各个领域,成为现代安全管理的重要组成部分。在视频监控领域,视频编码技术的选择尤为重要,它不仅关系到视频的质量,还直接影响到视频的传输效率和兼…...
SQL组合查询
本文讲述如何利用 UNION 操作符将多条 SELECT 语句组合成一个结果集。 1. 组合查询 多数 SQL 查询只包含从一个或多个表中返回数据的单条 SELECT 语句。但是,SQL 也允许执行多个查询(多条 SELECT 语句),并将结果作为一个查询结果…...
方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现
0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...
【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅
这里写目录标题 一、引言机器学习中集成学习的重要性 二、决策树 (Decision Tree)2.1 基本概念2.2 组成元素2.3 工作原理分裂准则 2.4 决策树的构建过程2.5 决策树的优缺点(1)决策树的优点(2)决策树的缺点(3࿰…...
Flink执行模式(批和流)如何选择
DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…...
LeetCode:101. 对称二叉树
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:101. 对称二叉树 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输…...
LDO输入电压不满足最小压差时输出会怎样?
1、LDO最小压差 定义:低压差稳压器(Low-dropout regulator,LDO)LDO的最小压差Vdo指的是LDO正常工作时,LDO的输入电压必须高于LDO输出电压的差值,即Vin≥VdoVout Vdo的值不是定值,会随着负载…...
源码分析之Openlayers中ZoomSlider滑块缩放控件
概述 ZoomSlider滑块缩放控件就是Zoom缩放控件的异形体,通过滑块的拖动或者点击滑槽,实现地图的缩放;另外其他方式控制地图缩放时,也会引起滑块在滑槽中的位置改变;即ZoomSlider滑块缩放控件会监听地图的缩放级别&…...
在Win11系统上安装Android Studio
诸神缄默不语-个人CSDN博文目录 下载地址:https://developer.android.google.cn/studio?hlzh-cn 官方安装教程:https://developer.android.google.cn/studio/install?hlzh-cn 点击Next,默认会同时安装Android Studio和Android虚拟机&#…...
华为ensp--BGP路径选择-AS_Path
学习新思想,争做新青年,今天学习的是BGP路径选择-AS_Path 实验目的: 理解AS_Path属性的概念 理解通过AS_Path属性进行选路的机制 掌握修改AS_Path属性的方法 实验内容: 本实验模拟了一个运营商网络场景,所有路由器都运行BGP协议ÿ…...
Android Java Ubuntu系统如何编译出 libopencv_java4.so
Cmake: cd ~ wget https://github.com/Kitware/CMake/releases/download/v3.30.3/cmake-3.30.3-linux-x86_64.tar.gztar -xzvf cmake-3.30.3-linux-x86_64.tar.gz sudo ln -sf $(pwd)/cmake-3.30.3-linux-x86_64/bin/* /usr/bin/cmake --versionAndroid NDK: wget https://…...
WPF Binding 绑定
绑定是 wpf 开发中的精髓,有绑定才有所谓的数据驱动。 1 . 背景 目前 wpf 界面可视化的控件,继承关系如下, 控件的数据绑定,基本上都要借助于 FrameworkElement 的 DataContext 属性。 只有先设置了控件的 DataContext 属性&…...
算法笔记—前缀和(动态规划)
【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) #include <initializer_list> #include <iostream> #include <vector> using namespace std;int main() {//输入数据int n,q;cin>>n>>q;vector<int> arr;arr.resize(n1);for(int i1;i<…...
将HTML转换为PDF:使用Spire.Doc的详细指南(二)无水印版
目录 引言 一、准备工作 1. 下载Spire.Doc for Java破解版 2. 将JAR包安装到本地Maven (1) 打开命令提示符 (2) 输入安装命令 (3) 在pom.xml中导入依赖 二、实现HTML到PDF的转换 1. 创建Java类 2. 完整代码示例 3. 代码解析 4. 处理图像 5. 性能优化 6. 错误处理…...
V900新功能-电脑不在旁边,通过手机给PLC远程调试网关配置WIFI联网
您使用BDZL-V900时,是否遇到过以下这种问题? 去现场配置WIFI发现没带电脑,无法联网❌ 首次配置WIFI时需使用网线连电脑,不够快捷❌ 而博达智联为解决该类问题,专研了一款网关配网工具,实现用户现场使用手机…...
prober.php探针
raw.githubusercontent.com/kmvan/x-prober/master/dist/prober.php...
esp8266_TFTST7735语音识别UI界面虚拟小助手
文章目录 一 实现思路1 项目简介1.1 项目效果1.2 实现方式 2 项目构成2.1 软硬件环境2.2 完整流程总结(重点整合)(1) 功能逻辑图(2) 接线(3) 使用esp8266控制TFT屏(4)TFT_espI库配置方法(5) TFT_esp库常用代码详解(6)TFT屏显示图片(7) TFT屏显示汉字(8) …...
【CSS in Depth 2 精译_086】14.3:CSS 剪切路径(clip-path)的用法
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 14.1.1 滤镜的类型14.1.2 背景滤镜 14.2 蒙版 14.2.1 带渐变效果的蒙版特效14.2.2 基于亮度来定义蒙版14.2.3 其他蒙版属…...
基于RAG与代码专用嵌入模型构建本地智能代码库问答系统
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“smart-codebase”。光看名字,你可能觉得这又是一个关于代码智能化的工具,但仔细研究其设计和实现思路,你会发现它瞄准的是一个非常具体且高频的痛点:如…...
ComfyUI-Inpaint-CropAndStitch终极指南:30倍加速AI图像修复的完整教程
ComfyUI-Inpaint-CropAndStitch终极指南:30倍加速AI图像修复的完整教程 【免费下载链接】ComfyUI-Inpaint-CropAndStitch ComfyUI nodes to crop before sampling and stitch back after sampling that speed up inpainting 项目地址: https://gitcode.com/gh_mir…...
AMD Ryzen终极调试指南:7步解锁SMUDebugTool硬件级控制
AMD Ryzen终极调试指南:7步解锁SMUDebugTool硬件级控制 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...
DataCleaner终极指南:免费开源的数据质量分析神器
DataCleaner终极指南:免费开源的数据质量分析神器 【免费下载链接】DataCleaner The premier open source Data Quality solution 项目地址: https://gitcode.com/gh_mirrors/dat/DataCleaner DataCleaner是一款功能强大的开源数据质量解决方案,专…...
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用
Beyond Compare 5本地化激活终极指南:三步实现专业文件对比工具永久使用 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare作为专业的文件对比与合并工具,其…...
基于BLE与CircuitPython的无线8-bit音乐合成器DIY全攻略
1. 项目概述与核心思路想不想亲手做一个能揣在口袋里,随时随地弹奏出复古8-bit音乐的小玩意儿?不是那种手机App模拟的,而是实实在在的、有物理按键、能无线连接、还会发光的小合成器。今天分享的这个项目,就是基于两块小巧但功能强…...
Android自动化测试代理droidrun-agent:架构、原理与实战部署
1. 项目概述:一个面向Android应用的自动化测试代理在移动应用开发,尤其是Android生态中,自动化测试是保证应用质量、提升迭代效率的基石。无论是回归测试、兼容性测试还是性能压测,一套稳定、高效的自动化框架都至关重要。然而&am…...
卡梅德生物技术快报|噬菌体肽库展示技术:细胞穿透肽筛选全流程技术实现
1. 问题背景(技术痛点) 细胞递送领域面临三大技术瓶颈: 穿透肽靶向性差,非特异性结合严重;传统筛选流程复杂,周期长、通量低;缺乏标准化验证体系,实验难以复现。噬菌体肽库展示技术…...
仅限档案学研究者获取:NotebookLM定制提示词库V2.3(含17个NARA/中国第一历史档案馆认证模板)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM档案学研究辅助 NotebookLM 是 Google 推出的基于 LLM 的研究型笔记工具,其核心能力在于对用户上传的私有文档(如 PDF、TXT、DOCX)进行语义理解与上下文关…...
基于CircuitPython与Adafruit IO的物联网倒计时时钟:精准时间同步与远程触发
1. 项目概述:一个精准、可远程触发的物联网倒计时时钟在嵌入式开发里,时间管理是个既基础又容易踩坑的环节。你可能遇到过这种情况:一个基于ESP32的智能浇花器,设定好每天上午10点浇水,结果因为设备内置时钟不准&#…...
