Vue3入門-計算屬性+監聽器

image.png

🏠個人主頁:Yui_
🍑操作環境:vscode\node.js
🚀所屬專欄:Vue3

image.png

文章目錄

  • 1. 計算屬性
    • 1.1 computed函數
    • 1.2 計算屬性VS普通函數
    • 1.3 計算屬性的完整寫法
  • 2. 監聽器
  • 3.總結

1. 計算屬性

計算屬性(computed)是 Vue 中用于根據已有數據動態計算新數據的屬性。它的特點是基于依賴進行緩存,只有相關依賴發生變化時才會重新計算,適合處理復雜邏輯或需要復用的表達式。

1.1 computed函數

語法:

const 新數據 = computed(() => {  
return 計算結果  
})
<script setup>
import { ref, computed } from 'vue'const count = ref(1)
const double = computed(() => count.value * 2)
</script><template><div>{{ double }}</div>
</template>

只要count的數字變化,double的數字就會自動變化
演示:

<script setup>
import { ref, computed } from 'vue'const cart = ref([{ id: 1, name: '蘋果', price: 3, count: 2, checked: true },{ id: 2, name: '香蕉', price: 2, count: 1, checked: false },{ id: 3, name: '橙子', price: 4, count: 3, checked: true }
])// 計算已選商品總價
const totalPrice = computed(() =>cart.value.filter(item => item.checked).reduce((sum, item) => sum + item.price * item.count, 0)
)// 計算已選商品數量
const selectedCount = computed(() =>cart.value.filter(item => item.checked).length
)// 增減商品數量
function changeCount(item, delta) {item.count += deltaif (item.count < 1) item.count = 1
}
</script><template><h2>購物車</h2><ul><li v-for="item in cart" :key="item.id"><input type="checkbox" v-model="item.checked" />{{ item.name }} - 單價:{{ item.price }} 元<button @click="changeCount(item, -1)">-</button>{{ item.count }}<button @click="changeCount(item, 1)">+</button></li></ul><p>已選商品數量:{{ selectedCount }}</p><p>總價:{{ totalPrice }} 元</p>
</template>

image.png
注意:

  • 計算屬性必須又返回值

1.2 計算屬性VS普通函數

貌似普通的函數也能做像計算屬性哪些功能吧。
計算屬性(computed)和普通函數(methods)在 Vue 中都可以實現基于數據的動態計算,但它們有以下區別:

  1. 計算屬性(computed)
  • 有緩存:依賴的數據不變時,計算屬性不會重新執行,直接返回上次的結果。
  • 適合依賴響應式數據的復雜邏輯,如總價、過濾、格式化等。
  1. 普通函數(methods)
  • 無緩存:每次調用都會重新執行函數體。
  • 適合處理事件、無狀態邏輯或不依賴響應式數據的場景

1.3 計算屬性的完整寫法

計算屬性的完整寫法可以使用對象形式,包含 get(和可選的 set)方法。
示例:

<script setup>
import { ref, computed } from 'vue'const count = ref(1)// 只讀計算屬性
const double = computed(() => count.value * 2)// 可讀可寫計算屬性
const doublePlus = computed({get() {return count.value * 2},set(val) {count.value = val / 2}
})
</script><template><div><p>count: {{ count }}</p><p>double: {{ double }}</p><input v-model="doublePlus"></div>
</template>

image.png

2. 監聽器

偵聽器(watcher)是 Vue 中用于監聽響應式數據變化并執行副作用操作的工具。常用于異步請求、復雜邏輯處理或需要在數據變化時執行特定操作的場景。
語法:

<script setup>
import { ref, watch } from 'vue'const count = ref(0)watch(count, (newVal, oldVal) => {console.log(`count 從 ${oldVal} 變為 ${newVal}`)
})
</script>

演示:

<template>
<div><input type="text" v-model="keyword">
</div>
</template><script setup>import {ref,watch} from "vue"const keyword = ref('')watch(keyword,(newVal,oldVal)=>{console.log(`新值為${newVal},舊值為${oldVal}`)})
</script><style scoped></style>

image.png
watch的作用就是監視響應式數據的變化,當數據變了,針對性的DOM操作或異步操作

3.總結

計算屬性(computed)用于根據已有數據動態計算新值,具有緩存特性,適合模板展示和數據派生;偵聽器(watch)用于監聽響應式數據的變化并執行副作用操作,如異步請求或復雜邏輯,適合處理數據變化帶來的過程和操作。兩者結合使用,可以讓 Vue 應用既高效又靈活。


往期文章:
Vue3入門-必會前置知識-CSDN博客
Vue3入門-聲明式渲染+數據響應式-CSDN博客
Vue3入門-指令-CSDN博客
Vue3入門-指令補充-CSDN博客
Vue3入門-組件及組件化-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89204.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux Swap區深度解析:為何禁用?何時需要?

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言一、Swap區&#xff1a;Linux的"內存救生圈"二、為什么要禁用Swap&#xff1f;性能的隱形殺手三、何時應該使用Swap&#xff1f;不可或缺的場景四、如…

用TensorFlow進行邏輯回歸(三)

邏輯回歸Logistic regression這個腳本展示如何用TensorFlow求解邏輯回歸。 ()ysigmoid(Axb)我們使用低出生重量數據,特別地:y 0 or 1 low birth weightx demographic and medical history dataimport matplotlib.pyplot as pltimport numpy as npimport tensorflow as tfimp…

mingw 編譯 assimp v6.0.2 解決編譯報錯

mingw 編譯 assimp v6.0.2 理論上看這個就能滿足&#xff1a;在Windows下使用CMakeMinGW64編譯Assimp庫 環境變量問題 i386 architecture of input file CMakeFiles\assimp.dir/objects.a(assimp.rc.obj)’ is incompatible with i386:x86-64 output collect2.exe: error: ld r…

Windows 11清理C盤方法大全:磁盤清理/禁用休眠/系統還原點/優化大師使用教程

Windows 11清理C盤方法1. 使用磁盤清理工具步驟&#xff1a;按 Win S 搜索“磁盤清理”&#xff0c;打開工具。選擇C盤&#xff0c;點擊“確定”。勾選需要清理的文件類型&#xff08;如臨時文件、系統錯誤內存轉儲等&#xff09;&#xff0c;點擊“確定”。確認刪除操作&…

Rabbitmq Direct Exchange(直連交換機)多個消費者,配置相同的key ,隊列,可以保證只有一個消費者消費嗎

思考可以保證消費不被重復消費&#xff0c;因為通過輪詢一個消息只會投遞給一個消費者。但是不是一個消費者消費&#xff0c;而是多個輪詢消費在 RabbitMQ 中&#xff0c;如果多個消費者&#xff08;Consumers&#xff09;同時訂閱 同一個隊列&#xff08;Queue&#xff09;&am…

設計模式是什么呢?

1.掌握設計模式的層次第一層&#xff1a;剛剛學編程不久&#xff0c;聽說過什么是設計模式。第二層&#xff1a;有很長時間的編程經驗&#xff0c;自己寫過很多代碼&#xff0c;其中用到了設計模式&#xff0c;但是自己不知道。第三層&#xff1a;學習過設計模式&#xff0c;發…

ThreadLocal使用詳解-從源碼層面分析

從demo入手看效果 代碼Demostatic ThreadLocal tl1 new ThreadLocal();static ThreadLocal tl2 new ThreadLocal();static ThreadLocal tl3 new ThreadLocal();public static void main(String[] args) {tl1.set("123");tl2.set("456");tl3.set("4…

CPO:對比偏好優化—突破大型語言模型在機器翻譯中的性能邊界

溫馨提示&#xff1a; 本篇文章已同步至"AI專題精講" CPO&#xff1a;對比偏好優化—突破大型語言模型在機器翻譯中的性能邊界 摘要 中等規模的大型語言模型&#xff08;LLMs&#xff09;&#xff0c;如參數量為 7B 或 13B 的模型&#xff0c;在機器翻譯&#xff0…

執行shell 腳本 如何將日志全部輸出到文件

在執行 Shell 腳本時&#xff0c;如果需要將 所有輸出&#xff08;包括標準輸出 stdout 和錯誤輸出 stderr&#xff09; 重定向到日志文件&#xff0c;可以使用以下方法&#xff1a;方法 1&#xff1a;直接重定向&#xff08;推薦&#xff09; /appdata/mysql_backup_dump.sh &…

Postman接口測試實現UI自動化測試

Selenium底層原理 3天精通Postman接口測試&#xff0c;全套項目實戰教程&#xff01;&#xff01;運行代碼&#xff0c;啟動瀏覽器后&#xff0c;webdriver會將瀏覽器綁定到特定的端口&#xff0c;作為webdriver的remote server&#xff08;遠程服務端&#xff09;&#xff0c;…

CSS動畫與變換全解析:從原理到性能優化的深度指南

引言&#xff1a;現代Web動畫的技術革命 在當今的Web體驗中&#xff0c;流暢的動畫效果已成為用戶交互的核心要素。根據Google的研究&#xff0c;60fps的動畫可以使用戶參與度提升53%&#xff0c;而卡頓的界面會導致跳出率增加40%。本文將深入剖析CSS動畫&#xff08;animation…

NPM組件 @ivy-shared-components/iconslibrary 等竊取主機敏感信息

【高危】NPM組件 ivy-shared-components/iconslibrary 等竊取主機敏感信息 漏洞描述 當用戶安裝受影響版本的 ivy-shared-components/iconslibrary 等NPM組件包時會竊取用戶的主機名、用戶名、工作目錄、IP地址等信息并發送到攻擊者可控的服務器地址。 MPS編號MPS-zh19-e78w…

Fail2ban防止暴力破解工具使用教程

Fail2ban防止暴力破解工具使用教程場景Fail2ban安裝和配置安裝配置原理遇到的問題以及解決辦法問題1&#xff1a;設置的策略是10分鐘內ssh連接失敗2次的ip進行封禁&#xff0c;日志中實際卻出現4次連接。問題2&#xff1a;策略設置為1分鐘內失敗兩次&#xff0c;封禁ip。但通過…

亞遠景科技助力長城汽車,開啟智能研發新征程

亞遠景科技助力長城汽車&#xff0c;開啟智能研發新征程在汽車智能化飛速發展的當下&#xff0c;軟件研發管理成為車企決勝未來的關鍵。近日&#xff0c;亞遠景科技胡浩老師應邀為長城汽車開展了一場主題深刻且極具實用價值的培訓。本次培訓聚焦軟件研發管理導論 - 建立機器學習…

圖算法在前端的復雜交互

引言 圖算法是處理復雜關系和交互的強大工具&#xff0c;在前端開發中有著廣泛應用。從社交網絡的推薦系統到流程圖編輯器的路徑優化&#xff0c;再到權限依賴的拓撲排序&#xff0c;圖算法能夠高效解決數據之間的復雜關聯問題。隨著 Web 應用交互復雜度的增加&#xff0c;如實…

Prometheus Operator:Kubernetes 監控自動化實踐

在云原生時代&#xff0c;Kubernetes 已成為容器編排的事實標準。然而&#xff0c;在高度動態的 Kubernetes 環境中&#xff0c;傳統的監控工具往往難以跟上服務的快速變化。Prometheus Operator 應運而生&#xff0c;它將 Prometheus 及其生態系統與 Kubernetes 深度融合&…

一種融合人工智能與圖像處理的發票OCR技術,將人力從繁瑣的票據處理中解放

在數字化浪潮席卷全球的今天&#xff0c;發票OCR技術正悄然改變著企業財務流程的運作模式。這項融合了人工智能與圖像處理的前沿技術&#xff0c;已成為財務自動化不可或缺的核心引擎。核心技術&#xff1a;OCR驅動的智能識別引擎發票OCR技術的核心在于光學字符識別&#xff08…

時空大數據:數字時代的“時空羅盤“

引言&#xff1a;為何需要“時空大數據”&#xff1f;“大數據”早已成為熱詞&#xff0c;但“時空大數據”的提出卻暗含深刻邏輯。中國工程院王家耀院士指出&#xff0c;早期社會存在三大認知局限&#xff1a;過度關注商業大數據而忽視科學決策需求&#xff1b;忽視數據的時空…

PySide筆記之信號連接信號

PySide筆記之信號連接信號code review! 在 PySide6&#xff08;以及 Qt 的其他綁定&#xff0c;如 PyQt&#xff09;中&#xff0c;信號可以連接到信號。也就是說&#xff0c;可以把一個信號的發射&#xff0c;作為另一個信號的觸發條件。這樣做的效果是&#xff1a;當第一個信…

Linux操作系統之線程:線程概念

目錄 前言&#xff1a; 一、進程與線程 二、線程初體驗 三、分頁式存儲管理初談 總結&#xff1a; 前言&#xff1a; 大家好啊&#xff0c;今天我們就要開始翻閱我們linux操作系統的另外一座大山&#xff1a;線程了。 對于線程&#xff0c;大體結構上我們是劃分為兩部分…