Vue开发中计算属性与方法调用之间的区别与联系

文章目录

    • 一 概述
    • 二 核心区别
    • 三 联系
    • 四 使用原则

一 概述

在 Vue 中,计算属性(computed) 和 方法(methods) 都可以用于处理数据逻辑,但它们的核心区别在于 缓存机制 和 触发方式 。

计算属性示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>demo</title>
</head><body><!-- 使用computed --><div id="app"><button v-on:click="a++">a+1</button><button v-on:click="b++">b+1</button><p>number + a = {{add1}}</p><p>number + b = {{add2}}</p></div><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script>const vm = Vue.createApp({data() {return {a: 0,b: 0,number: 30};},computed: {add1: function() {console.log("This is add1 computed function: " +this.a);return this.a + this.number;},add2: function() {console.log("This is add2 computed function: " +this.b);return this.b + this.number;}}}).mount("#app");</script>
</body></html>

页面加载时,控制台打印结果如下:

This is add1 computed function: 0
This is add2 computed function: 0

连续点击2次a+1按钮,再点击一次b+1按钮,控制台运行结果如下:
![运行结果(https://i-blog.csdnimg.cn/direct/290985ee437f4bab9bee11ff72251a02.png)
方法调用示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>demo</title>
</head><body><!-- 使用methods --><div id="app"><button v-on:click="a++">a+1</button><button v-on:click="b++">b+1</button><p>number + a = {{add1()}}</p><p>number + b = {{add2()}}</p></div><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><script>const vm = Vue.createApp({data() {return {a: 0,b: 0,number: 30};},methods: {add1: function() {console.log("This is add1 method:" + this.a);return this.a + this.number;},add2: function() {console.log("This is add2 method:" + this.b);return this.b + this.number;}}}).mount("#app");</script>
</body></html>

页面加载时,控制台打印结果如下:

This is add1 computed function: 0
This is add2 computed function: 0

连续点击2次a+1按钮,再点击一次b+1按钮,控制台运行结果如下:
运行结果

二 核心区别

特性计算属性(computed)方法(methods)
缓存机制基于依赖的响应式数据自动缓存,依赖不变时直接返回缓存值。无缓存,每次组件渲染时都会执行。
触发时机仅当依赖的响应式数据变更时重新计算。每次渲染或调用时都会执行。
调用方式在模板中直接当作属性使用(无需调用)。 计算属性的调用不能使用括号,例如 add1、add2。必须显式调用,需要加上括号,例如 add1()、add2()。
适用场景复杂逻辑、依赖其他数据且需缓存的场景(如过滤、计算衍生值)。事件处理、不依赖缓存的动态操作(如提交表单)。

三 联系

共同点

  • 都可以处理数据逻辑,返回衍生值。
  • 都能访问组件实例的 data、props 等属性。

互补场景

  • 计算属性适合 高开销、依赖明确 的逻辑(如过滤列表、复杂计算)。
  • 方法适合事件驱动或无需缓存的操作(如表单提交、动态参数生成)。

四 使用原则

计算属性相较于方法更加优化,但并不是什么情况下都可以使用计算属性,在触发事件时还是使用对应的方法。计算属性一般在数据量比较大、比较耗时的情况下使用(例如搜索),只有虚拟DOM 与真实 DOM 不同的情况下才会执行 computed。如果你的业务实现不需要有缓存,计算属性可以使用方法来代替。
优先使用计算属性 :
当需要根据响应式数据动态生成值,且该值会被多次使用或计算成本较高时。
使用方法 :
当逻辑不依赖响应式数据,或需要显式触发(如按钮点击事件)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器

更新日期&#xff1a;2025年3月7日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中&#xff0c;文件夹锁定器能够为任何文件夹加…

C语言:6.20字符型数据练习题

编写程序,输人一行数字字符(用回车结束),每个数字字符 的前后都有空格。 把这一行中的数字转换成一个整数。 例如,若输入(<CR>代表 Enter键):2 4 8 3<CR>则输出 整数:2483。 #include <stdio.h>int main() {char ch;int number 0;printf("请输入一行…

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

【C语言】数组篇

目录 引言一维数组数组的定义数组的初始化完全初始化部分初始化省略数组长度 数组元素的访问 多维数组二维数组的定义二维数组的初始化完全初始化部分初始化省略第一维长度 二维数组元素的访问 遍历数组元素遍历一维数组遍历二维数组 数组作为函数参数一维数组作为函数参数二维…

OpenCV视频解码性能优化十连击(实测帧率提升300%)

解密工业级视频处理优化方案&#xff01;从硬件加速到多线程榨干CPU/GPU性能&#xff0c;附RTSP流调优参数与内存泄漏排查技巧。 &#x1f527; 优化前准备 环境检测脚本 import cv2# 验证硬件加速支持 print("CUDA支持:", cv2.cuda.getCudaEnabledDeviceCount() &…

基于编译器特性浅析C++程序性能优化

最近在恶补计算机基础知识&#xff0c;学到CSAPP第五章的内容&#xff0c;在这里总结并且展开一下C程序性能优化相关的内容。 衡量程序性能的方式 一般而言&#xff0c;程序的性能可以用CPE&#xff08;Cycles Per Element&#xff09;来衡量&#xff0c;其指的是处理每个元素…

transformer模型介绍——大语言模型 LLMBook 学习(二)

1. transformer模型 1.1 注意力机制 **注意力机制&#xff08;Attention Mechanism&#xff09;**在人工智能中的应用&#xff0c;实际上是对人类认知系统中的注意力机制的一种模拟。它主要模仿了人类在处理信息时的选择性注意&#xff08;Selective Attention&#xff09;&a…

word甲烷一键下标

Sub 甲烷下标()甲烷下标 宏Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text "CH4".Replacement.Text "CHguoshao4".Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWhole…

Dify 本地部署教程

目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下载zip源码包。 目前最新版本是V…

2.1 掌握XML基础知识

本文介绍了结构化、半结构化和非结构化数据的概念与特点。结构化数据以固定格式存储于数据库&#xff0c;便于查询与管理&#xff0c;常用于金融等领域。半结构化数据如XML、JSON&#xff0c;具有一定的组织形式但模式不固定&#xff0c;适用于Web内容和日志文件。非结构化数据…

Android Studio 配置国内镜像源

Android Studio版本号&#xff1a;2022.1.1 Patch 2 1、配置gradle国内镜像&#xff0c;用腾讯云 镜像源地址&#xff1a;https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址&#xff1a;Index of /AndroidSDK/

超过 37000 台 VMwareESXi 服务器可能受到持续攻击威胁

近日&#xff0c;威胁监测平台影子服务器基金会&#xff08;The Shadowserver Foundation&#xff09;发布报告&#xff0c;指出超 3.7 万个互联网暴露的威睿&#xff08;VMware&#xff09;ESXi 实例存在严重安全隐患&#xff0c;极易受到 CVE-2025-22224 漏洞的攻击。该漏洞属…

npm终端执行时报错

终端npm执行时报错下错误&#xff1a; 报错了&#xff0c;就来百度&#xff0c;报错的原因是 1、这个错误是因为 PowerShell 的执行策略&#xff08;Execution Policy&#xff09;限制了脚本的运行 2、默认情况下&#xff0c;Windows 系统可能会禁止运行未签名的脚本&#x…

JVM类加载器面试题及原理

JVM只会运行二进制文件&#xff0c;类加载器的作用就是将字节码文件加载到JVM中&#xff0c;从而让Java程序能够启动起来。 1. 类加载器的种类 启动类加载器&#xff08;BootStrap ClassLoader&#xff09;&#xff1a;加载JAVA_HOME/jre/lib目录下的库扩展类加载器&#xff…

C语言每日一练——day_3(快速上手C语言)

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第三天。&#xff08;会连续更新&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…

用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!

一、项目需求分析与技术选型 DeepSeekAssistant是一款基于深度求索&#xff08;DeepSeek&#xff09;API的智能对话助手&#xff0c;核心需求包括&#xff1a; 用户界面友好&#xff1a;支持多轮对话展示数据持久化&#xff1a;历史记录存储与检索异步网络通信&#xff1a;AP…

Linux 环境变量快速上手指南

Linux 环境变量快速上手 1. 什么是环境变量 环境变量&#xff08;Environment Variables&#xff09;是操作系统中用于存储配置信息的一种机制&#xff0c;可以在运行时被进程读取和使用。常见环境变量示例&#xff1a; PATH: 存放可执行文件搜索路径。HOME: 当前用户的家目录…

万字技术指南STM32F103C8T6 + ESP8266-01 连接 OneNet 平台 MQTT/HTTP

此博客为一份详细的指南&#xff0c;涵盖 STM32F103C8T6 通过 ESP8266-01 连接 OneNet 平台&#xff0c;并使用 MQTT/HTTP 进行数据通信的完整流程。这份文档包括&#xff1a; OneNet 平台的介绍与功能概览在 OneNet 上创建和配置设备的方法STM32CubeIDE 的开发环境搭建ESP826…

Go本地缓存设计与实现

本地缓存是一个项目中很常见的组件。在很多人的眼中就是一个简单的key-value的map存储即可实现&#xff0c;但实际上&#xff0c;设计一个本地缓存需要考虑的问题远比你想象的多&#xff0c;比如说&#xff0c;本地缓存是将数据存储在内存&#xff0c;若数据量激增突破了内存限…

深入解析 JavaScript 原型与原型链:从原理到应用

原型和原型链是 JavaScript 中实现对象继承和属性查找的核心机制。为了更深入地理解它们&#xff0c;我们需要从底层原理、实现机制以及实际应用等多个角度进行分析。 1. 原型&#xff08;Prototype&#xff09; 1.1 什么是原型&#xff1f; 每个 JavaScript 对象&#xff08…