当前位置: 首页 > news >正文

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 选项定义,可以通过事件触发(如 clicksubmit)或显式调用。

示例:
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. 特点
  • 缓存机制:计算属性的值会缓存,只有当它的依赖(如 firstNamelastName)发生变化时,才会重新计算。若依赖数据没有变化,返回的值是缓存的。
  • 自动更新:当依赖的数据发生变化时,计算属性会自动重新计算。
  • 适合用于组合值:如合并字符串、计算价格、格式化日期等。
  • 支持 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 中&#xff0c;计算属性&#xff08;computed&#xff09;、侦听器&#xff08;watch&#xff09;和方法&#xff08;methods&#xff09;都是响应式的数据处理方式 文章目录 1. 方法&#xff08;Methods&#xff09;1.1. 是什么1.2. 怎么用示例&#xff1a; 1.3. 特…...

Linux C 程序 【05】异步写文件

1.开发背景 Linux 系统提供了各种外设的控制方式&#xff0c;其中包括文件的读写&#xff0c;存储文件的介质可以是 SSD 固态硬盘或者是 EMMC 等。 其中常用的写文件方式是同步写操作&#xff0c;但是如果是写大文件会对 CPU 造成比较大的负荷&#xff0c;采用异步写的方式比较…...

Liveweb视频汇聚平台支持WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新&#xff0c;视频监控已经广泛应用于社会各个领域&#xff0c;成为现代安全管理的重要组成部分。在视频监控领域&#xff0c;视频编码技术的选择尤为重要&#xff0c;它不仅关系到视频的质量&#xff0c;还直接影响到视频的传输效率和兼…...

SQL组合查询

本文讲述如何利用 UNION 操作符将多条 SELECT 语句组合成一个结果集。 1. 组合查询 多数 SQL 查询只包含从一个或多个表中返回数据的单条 SELECT 语句。但是&#xff0c;SQL 也允许执行多个查询&#xff08;多条 SELECT 语句&#xff09;&#xff0c;并将结果作为一个查询结果…...

方正畅享全媒体新闻采编系统 screen.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…...

【机器学习】【集成学习——决策树、随机森林】从零起步:掌握决策树、随机森林与GBDT的机器学习之旅

这里写目录标题 一、引言机器学习中集成学习的重要性 二、决策树 (Decision Tree)2.1 基本概念2.2 组成元素2.3 工作原理分裂准则 2.4 决策树的构建过程2.5 决策树的优缺点&#xff08;1&#xff09;决策树的优点&#xff08;2&#xff09;决策树的缺点&#xff08;3&#xff0…...

Flink执行模式(批和流)如何选择

DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…...

LeetCode:101. 对称二叉树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输…...

LDO输入电压不满足最小压差时输出会怎样?

1、LDO最小压差 定义&#xff1a;低压差稳压器&#xff08;Low-dropout regulator&#xff0c;LDO&#xff09;LDO的最小压差Vdo指的是LDO正常工作时&#xff0c;LDO的输入电压必须高于LDO输出电压的差值&#xff0c;即Vin≥VdoVout   Vdo的值不是定值&#xff0c;会随着负载…...

源码分析之Openlayers中ZoomSlider滑块缩放控件

概述 ZoomSlider滑块缩放控件就是Zoom缩放控件的异形体&#xff0c;通过滑块的拖动或者点击滑槽&#xff0c;实现地图的缩放&#xff1b;另外其他方式控制地图缩放时&#xff0c;也会引起滑块在滑槽中的位置改变&#xff1b;即ZoomSlider滑块缩放控件会监听地图的缩放级别&…...

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 官方安装教程&#xff1a;https://developer.android.google.cn/studio/install?hlzh-cn 点击Next&#xff0c;默认会同时安装Android Studio和Android虚拟机&#…...

华为ensp--BGP路径选择-AS_Path

学习新思想&#xff0c;争做新青年&#xff0c;今天学习的是BGP路径选择-AS_Path 实验目的: 理解AS_Path属性的概念 理解通过AS_Path属性进行选路的机制 掌握修改AS_Path属性的方法 实验内容: 本实验模拟了一个运营商网络场景&#xff0c;所有路由器都运行BGP协议&#xff…...

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 开发中的精髓&#xff0c;有绑定才有所谓的数据驱动。 1 . 背景 目前 wpf 界面可视化的控件&#xff0c;继承关系如下&#xff0c; 控件的数据绑定&#xff0c;基本上都要借助于 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时&#xff0c;是否遇到过以下这种问题&#xff1f; 去现场配置WIFI发现没带电脑&#xff0c;无法联网❌ 首次配置WIFI时需使用网线连电脑&#xff0c;不够快捷❌ 而博达智联为解决该类问题&#xff0c;专研了一款网关配网工具&#xff0c;实现用户现场使用手机…...

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 完整流程总结&#xff08;重点整合&#xff09;(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)的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 14.1.1 滤镜的类型14.1.2 背景滤镜 14.2 蒙版 14.2.1 带渐变效果的蒙版特效14.2.2 基于亮度来定义蒙版14.2.3 其他蒙版属…...

【服务器】MyBatis是如何在java中使用并进行分页的?

MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的持久层框架。它消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java 的 POJO&#xff08;Plain Old Java Objects&#xff0c;普通老式 …...

vue 文本域 展示的内容格式要和填写时保持一致

文本域 展示的内容格式要和填写时保持一致 <el-inputtype"textarea":rows"5"placeholder"请输入内容"v-model"formCredit.point"style"width:1010px;" > </el-input> 样式加个&#xff1a; white-space: pre-w…...

linux-----进程及基本操作

进程的基本概念 定义&#xff1a;在Linux系统中&#xff0c;进程是正在执行的一个程序实例&#xff0c;它是资源分配和调度的基本单位。每个进程都有自己独立的地址空间、数据段、代码段、栈以及一组系统资源&#xff08;如文件描述符、内存等&#xff09;。进程的组成部分&am…...

[Python学习日记-73] 面向对象实战1——答题系统

[Python学习日记-73] 面向对象实战1——答题系统 简介 需求模型——5w1h8c 领域模型 设计模型 实现模型 案例&#xff1a;年会答题系统 简介 在学习完面向对象之后你会发现&#xff0c;你还是不会自己做软件做系统&#xff0c;这是非常正常的&#xff0c;这是因为计算机软…...

Win10将WindowsTerminal设置默认终端并添加到右键(无法使用微软商店)

由于公司内网限制&#xff0c;无法通过微软商店安装 Windows Terminal&#xff0c;本指南提供手动安装和配置新版 Windows Terminal 的步骤&#xff0c;并添加右键菜单快捷方式。 1. 下载新版终端安装包: 访问 Windows Terminal 的 GitHub 发布页面&#xff1a;https://githu…...

AOI外观缺陷检测机

主要功能&#xff1a; 快速检测产品装配缺陷&#xff0c;包括螺丝、元器件、端子排线、二维码、一维条码、识别读码、产品外观 Logo缺陷以及产品标签、字符缺陷检测等产品的缺陷检测。 设备优势&#xff1a;1.采用轻型可移动支架&#xff0c;可以快速对接产线工艺工序&am…...

精读 84页华为BLM战略规划方法论

这篇文档主要介绍了华为的BLM战略规划方法论&#xff0c;该方法论旨在帮助企业制定战略规划&#xff0c;并确保战略规划的可执行性和有效性。以下是该文档的核心知识点和重点需要关注的内容&#xff1a; 战略规划的定义&#xff1a;战略规划是企业依据企业外部环境和企业自身的…...

工业摄像机基于电荷耦合器件的相机

工业摄像机系列产品及其识别技术的详细介绍&#xff1a; 一、工业摄像机概述 工业摄像机是利用光学成像技术获取视觉信息&#xff0c;并通过图像处理算法分析这些信息的设备。它通常具有高图像稳定性、高传输能力和高抗干扰能力等特性&#xff0c;适用于各种复杂的工业环境。 …...

13.罗意文面试

1、工程化与架构设计&#xff08;考察项目管理和架构能力&#xff09; 1.1 你负责的可视化编排项目中&#xff0c;如何设计组件的数据结构来支持"拖拉拽"功能&#xff1f;如何处理组件间的联动关系&#xff1f; // 组件数据结构示例 {components: [{id: comp1,type…...

xxljob window免安装

gitee地址&#xff1a; https://gitee.com/xuxueli0323/xxl-job idea打开 1、配置maven环境 2、修改数据库连接&#xff0c;网页端口 3、修改执行器中连接的网页端口 右侧-xxljob-生命周期-package 生成&#xff1a; D:\xxx\Gitee\xxl-job\xxl-job-admin\target 目录下 x…...