在 vue3 和 vue2 中,computed 計算屬性和 methods 方法區別是什么

在 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…