当前位置: 首页 > 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 其他蒙版属…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标&#xff1a; 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...