在 Vue 2 和 Vue 3 中,computed(计算属性)和 methods(方法)都是处理数据逻辑的方式,但它们在缓存机制、使用场景、执行时机等方面有显著区别,且这些区别在两个版本中保持一致。

1. 缓存机制(核心区别)

  • computed 计算属性
    会对计算结果进行缓存。只有当依赖的响应式数据发生变化时,才会重新计算;如果依赖数据不变,多次访问计算属性会直接返回缓存的结果,不会重复执行计算逻辑。

    示例(Vue 2/3 通用):

    // 计算属性会缓存结果
    computed: {filteredList() {console.log('computed 执行了');return this.list.filter(item => item.active);}
    }
    

    多次访问 filteredList 时,若 list 未变化,只会打印一次 computed 执行了

  • methods 方法
    没有缓存机制,每次调用都会重新执行函数,无论依赖的数据是否变化。

    示例(Vue 2/3 通用):

    // 方法每次调用都会重新执行
    methods: {getFilteredList() {console.log('method 执行了');return this.list.filter(item => item.active);}
    }
    

    每次调用 getFilteredList() 或在模板中使用 {{ getFilteredList() }} 时,都会打印 method 执行了

2. 使用场景

  • computed
    适合用于基于现有响应式数据派生新数据的场景,尤其是需要频繁访问结果时(如模板中多次引用)。
    例如:数据过滤、格式化(如日期转换)、数值计算(如总价 = 单价 × 数量)等。

  • methods
    适合用于处理业务逻辑、事件处理不需要缓存的场景。
    例如:按钮点击事件、表单提交、一次性数据处理(如获取随机数)等。

3. 调用方式

  • computed
    在模板中使用时不需要加括号,直接作为属性访问(因为它本质是一个被缓存的属性)。
    示例:{{ filteredList }}(而非 {{ filteredList() }})。

  • methods
    在模板中使用时必须加括号(作为函数调用)。
    示例:{{ getFilteredList() }}@click="handleClick()"

4. 依赖追踪

  • computed
    会自动追踪依赖的响应式数据(如 dataprops 中的数据),当依赖变化时自动更新。

  • methods
    不会主动追踪依赖,仅在被调用时执行,其内部使用的响应式数据变化不会触发方法自动执行(除非手动调用)。

总结对比表

特性computed 计算属性methods 方法
缓存有缓存,依赖不变则不重新计算无缓存,每次调用都重新执行
调用方式模板中直接用属性名(不加括号)模板中需加括号(作为函数调用)
适用场景数据派生、过滤、格式化(需频繁访问)事件处理、业务逻辑(无需缓存)
依赖追踪自动追踪依赖,依赖变化自动更新不追踪依赖,需手动调用才执行

一句话总结

computed 是“带缓存的派生属性”,methods 是“无缓存的函数”。根据是否需要缓存和使用场景选择:需要缓存且基于响应式数据派生新数据时用 computed,需要执行动作或不需要缓存时用 methods

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

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

相关文章

android 改机系列之-虚拟摄像头-替换相机预览画面

Android Native 层实现跨进程 YUV 视频帧共享:基于抽象 Unix Socket 的高效通信方案。基于AOSP13源码或者lineage20 或相近版本。非hook 或者lsp 等插件方案。 1.引言 在某些定制化 Android 应用场景中,我们可能需要动态替换系统相机的预览画面 —— 例…

SSM从入门到实战:2.5 SQL映射文件与动态SQL

👋 大家好,我是 阿问学长!专注于分享优质开源项目解析、毕业设计项目指导支持、幼小初高的教辅资料推荐等,欢迎关注交流!🚀 12-SQL映射文件与动态SQL 📖 本文概述 本文是SSM框架系列MyBatis进…

vue+vite打包后的文件希望放在一个子目录下

比如我们常规操作是打包的项目文件直接放在域名下面。如果我们希望把项目放在子域名下面应该怎么处理呢?需要两个步骤vite.config.js里面指定base的路径假设我们希望放在子目录加做call那么我们可以这样base:/call/,注意不是build目录哈。return的最外层。如果本地和…

Java:Docx4j类库简介及使用

1.简介 Docx4j 是一个功能强大的 Java 类库,专门用于创建和操作 Microsoft Open XML 格式(如 Word DOCX、PowerPoint PPTX 和 Excel XLSX)的文件。它深受 Java 开发者喜爱,特别是在需要自动化处理 Office 文档的场景下。 下面是一…

【机械故障】旋转机械故障引起的振动信号调制效应概述

系列文章目录 提示:学习笔记 机械故障信号分析 共振峰 旋转机械故障引起的振动信号调制效应概述系列文章目录一、研究背景与意义二、故障引起的调制效应分类三、非平稳信号分析方法3.1 时频分析方法3.2 信号分解方法一、研究背景与意义 在工程实践中,可…

密码安全隐形基石:随机数、熵源与DRBG核心解析与技术关联

前言:密码安全的 “隐形基石” 在数字化浪潮席卷全球的今天,从金融交易的密钥生成到区块链的共识机制,从量子通信的加密协议到智能汽车的身份认证,随机数如同空气般渗透在信息系统的每一个安全节点。然而,看似简单的 …

Vue3 + Element Plus实现表格多行文本截断与智能Tooltip提示

在实际开发中,我们经常需要在表格中展示较长的文本内容,但又希望保持界面的整洁美观。本文将介绍如何在Vue3 和 Element Plus中实现表格多行文本截断,并智能控制Tooltip的显示——只有当文本被截断时才显示Tooltip,否则不显示。 需…

使用powerquery处理数据,取时间或者日期之前的

Table.AddColumn(#"已更改列类型 1", "自定义 (2)", each letcleanText Text.Replace([备注], "#(lf)", " "),hasTime Text.Contains(cleanText, "时间:"),hasDate Text.Contains(cleanText, "日期&…

Java面试全栈技术解析:从Spring Cloud到Kafka的实战演练

面试官:请简单介绍一下Spring Cloud的核心组件? 谢飞机:嗯...Spring Cloud主要是基于Spring Boot的,然后有Eureka做服务发现,Feign做声明式REST调用,还有Config做配置中心... 面试官:那在电商场…

极简 useState:手写 20 行,支持多次 setState 合并

不依赖 React,用 闭包 批处理队列 实现可合并更新的 useState。一、20 行完整代码 function createUseState(initialValue) {let state initialValue;let pending null; // 合并队列let listeners [];const flush () > {if (pending ! null) {…

LabVIEW Vision视觉引导撑簧圈智能插装

为解决人工插装连接器撑簧圈时劳动强度大、效率低、一致性差的问题,例以 LabVIEW为开发平台,结合 IMAQ Vision 机器视觉库,搭配精密硬件搭建智能插装系统。系统可适配 9 芯、13 芯、25 芯、66 芯、128 芯 5 种规格工件,经 100 只产…

【Lua】题目小练11

-- 题目1:-- 给定表 t {"apple", "banana", "apple", "orange", "banana", "apple"}-- 写一个函数 countFreq(tbl) 返回一个新表,统计每个元素出现次数-- 例如:返回 {apple3, …

ElementUI之菜单(Menu)使用

文章目录项目创建创建项目运行项目整理目录删除src/assets中的所有logo.png删除src/components中的所有文件修改src/route/index.js删除src/views中所有文件修改src/app.vue整理完目录如下引入ElementUI安装ElementUI引入ElementUI测试是否安装成功编写src/app.vue运行结果编写…

Python训练营打卡Day44-通道注意力(SE注意力)

知识点回顾: 不同CNN层的特征图:不同通道的特征图什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。通道注意力:模型的定义和插入的位置通道注意力后的特征图和热力图 内…

shiro进行解密

目录Shiro 解密的核心注意事项1. 密码处理:坚决避免 “可逆解密”2.例子【自己模拟数据库,未连数据库】:Shiro 解密的核心注意事项 1. 密码处理:坚决避免 “可逆解密” 禁用明文存储:永远不要将明文密码存入数据库,必须使用 Has…

更改 Microsoft Edge 浏览器的缓存与用户数据目录位置

Microsoft Edge浏览器默认会将缓存文件和用户数据存储在系统盘(通常是C盘),随着使用时间的增长,这些文件可能会占用大量空间。本文将详细介绍多种更改Edge浏览器缓存位置和用户数据目录位置的方法,帮助您更好地管理磁盘…

【传奇开心果系列】Flet框架实现的图形化界面的PDF转word转换器办公小工具自定义模板

let框架实现的图形化界面的PDF转word转换器办公小工具自定义模板一、效果展示截图二、PDF转Word转换器概括介绍三、功能特性四、安装依赖五、运行程序六、使用说明七、注意事项八、技术栈九、系统要求十、源码下载地址 一、效果展示截图二、PDF转Word转换器概括介绍 一个基于Fl…

STM32 定时器(PWM输入捕获)

以下是基于STM32标准库(以STM32F103为例)实现PWM输入模式(自动双沿捕获)的完整代码,通过配置定时器的PWM输入模式,可自动捕获外部PWM信号的周期(频率)​和占空比,无需手动…

Web安全开发指导规范文档V1.0

一、背景 团队最近频繁遭受网络攻击,引起了部门技术负责人的重视,笔者在团队中相对来说更懂安全,因此花了点时间编辑了一份安全开发自检清单,觉得应该也有不少读者有需要,所以将其分享出来。 二、编码安全 2.1 输入验证 说明 检查项 概述 任何来自客户端的数据,如URL和…

在Godot中为您的游戏添加并控制游戏角色的完整技术指南

这是一个在Godot中为您的游戏添加并控制玩家角色的完整技术指南。这个过程分为三大步:​准备资源、构建场景、编写控制脚本。道可道,非常道,名可名,非常名!第一步:准备资源(建模与动画&#xff…