Vue基礎(7)_計算屬性

計算屬性(computed)

一、使用方式:
1.定義計算屬性: 在Vue組件中,通過在 computed 對象中定義計算屬性名稱及對應的計算函數來創建計算屬性。計算函數會返回計算屬性的值
2.在模板中使用計算屬性: 在Vue的模板中,您可以直接像訪問普通屬性一樣使用計算屬性。Vue會自動處理計算屬性的依賴關系,并在相關數據變化時更新計算屬性。
3.計算屬性的特點
(1)計算屬性是基于它們的依賴進行緩存的,只有在依賴發生變化時才會重新求值。
(2)計算屬性的值會根據相關依賴的變化而自動更新,無需手動觸發。
(3)計算屬性的定義類似于普通的屬性,但需要使用函數來返回計算結果。

二、computed與methods的區別:
1.計算屬性和方法的調用方式不同: 計算屬性是通過對應名稱直接訪問的,而方法需要在模板中使用 v-on 指令或者 @ 符號進行調用。
2.計算屬性可以緩存結果,而方法不能: 計算屬性的值會被緩存起來,只有在它所依賴的響應式數據變化時才會重新計算。而方法每次調用都要重新計算,無法被緩存。
3.計算屬性應該用于簡單的計算,而方法用于復雜邏輯的處理: 如果需要對數據進行一些簡單的計算或過濾,可以使用計算屬性,因為它們比方法更高效。而如果需要進行一些復雜的邏輯處理,應該使用方法。

簡單理解和使用計算屬性(computed):
1.定義:要用的屬性不存在,要通過已有屬性計算得來。
2.原理:底層借助了Object.defineproperty方法提供的getter和setter
3.get函數什么時候執行?
(1).初次讀取時會執行一次。
(2).當依賴的數據發生改變時會被再次調用。
4.優勢:與methods實現相比,內部有緩存機制(復用),效率更高,調試方便。
5.備注:
1.計算屬性最終會出現在vm上,直接讀取使用即可
2.如果計算屬性要被修改,那必須寫set函數去響應修改,且set中要引起計算時依賴的數據發生變化。

舉例:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><script type="text/javascript" src="../js/vue.js"></script><title>計算屬性</title>
</head><body><div id="root01"><h3>差值語法實現</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>全名:{{firstName.slice(0,3)}} {{lastName}}</div><div id="root02"><h3>methods(方法)實現</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性別:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName()}}</span><br>全名:<span>{{fullName()}}</span></div><div id="root03"><h3>計算屬性實現</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性別:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName}}</span><br>全名:<span>{{fullName}}</span></div><div id="root04"><h3>計算屬性(簡寫)</h3>姓:<input type="text" v-model:value="firstName"> <br>名:<input type="text" v-model:value="lastName"><br>性別:<input type="text" v-model:value="gender"><br>全名:<span>{{fullName}}</span><br>全名:<span>{{fullName}}</span></div>
</body>
<script>Vue.config.devtools = true;// 1、用 "插值語法" 輸出姓名// vue提倡模板簡單,當表達式過多時,插值語法代碼代碼會看起來臃腫new Vue({el: "#root01",data: {firstName: '張',lastName: '三',}})// 2、用 "methods(方法)" 輸出姓名new Vue({el: "#root02",data: {firstName: '李',lastName: '四',gender: '男'},methods: {fullName() {console.log("fullName方法調用了");return this.firstName.slice(0, 3) + ' ' + this.lastName;}},})// 3、用 "計算屬性" 輸出姓名var vm = new Vue({el: "#root03",data: {firstName: '王',lastName: '五',gender: '女'},// 計算屬性對象的優勢:有緩存,省去不必要的重復調用。// 完整寫法,包含讀取(get)和修改(set)computed: {fullName: {// get的作用:當有人讀取fullName屬性時,get就會被調用,且返回值就作為屬性fullName的值。// get什么時候調用?1.初次讀取fullName時。2.所依賴的數據發生變化時。get() {console.log("計算屬性對象中,屬性fullName內的get函數被調用了");// 此處的this為vmreturn this.firstName + ' ' + this.lastName;},// set什么時候調用:當fullName屬性被修改時。set(value) {console.log('set函數被調用', value);const arr = value.split('');this.firstName = arr[0];this.lastName = arr[1];}}},})new Vue({el: "#root04",data: {firstName: '趙',lastName: '六',gender: '女'},// 計算屬性簡寫,只包含讀取(get)computed: {// 對應以上的get函數,效果一致fullName() {console.log("計算屬性對象中,屬性fullName內的get函數被調用了");return this.firstName + ' ' + this.lastName;}}})
</script>
</html>

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

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

相關文章

辛格迪客戶案例 | 華道生物細胞治療生產及追溯項目(CGTS)

01 華道&#xff08;上海&#xff09;生物醫藥有限公司&#xff1a;細胞治療領域的創新先鋒 華道&#xff08;上海&#xff09;生物醫藥有限公司&#xff08;以下簡稱“華道生物”&#xff09;是一家專注于細胞治療技術研發與應用的創新型企業&#xff0c;尤其在CAR-T細胞免疫…

[26] cuda 應用之 nppi 實現圖像格式轉換

[26] cuda 應用之 nppi 實現圖像格式轉換 講述 nppi 接口定義通過nppi實現 bayer 格式轉rgb格式官網參考信息:http://gwmodel.whu.edu.cn/docs/CUDA/npp/group__image__color__debayer.html#details1. 接口定義 官網關于轉換的原理是這么寫的: Grayscale Color Filter Array …

2025“釘耙編程”中國大學生算法設計春季聯賽(8)10031007

題目的意思很好理解找從最左邊到最右邊最短路&#xff08;BFS&#xff09; #include <bits/stdc.h> using namespace std; int a[510][510]; // 存儲網格中每個位置是否有障礙&#xff08;1表示有障礙&#xff0c;0表示無障礙&#xff09; int v[510][510]; // 記錄每…

【Linux】第十一章 管理網絡

目錄 1.TCP/IP網絡模型 物理層&#xff08;Physical&#xff09; 數據鏈路層&#xff08;Date Link&#xff09; 網絡層&#xff08;Internet&#xff09; 傳輸層&#xff08;Transport&#xff09; 應用層&#xff08;Application&#xff09; 2. 對于 IPv4 地址&#…

python_股票月數據趨勢判斷

目錄 前置 代碼 視頻&月數據 前置 1 A股月數據趨勢大致判斷&#xff0c;做一個粗略的篩選 2 邏輯&#xff1a; 1&#xff09;取最近一次歷史最高點 2&#xff09;以1&#xff09;中最高點為分界點&#xff0c;只看右側數據&#xff0c;取最近一次最低點 3&#xf…

Python PyAutoGUI庫【GUI 自動化庫】深度解析與實戰指南

一、核心工作原理 底層驅動機制&#xff1a; 通過操作系統原生API模擬輸入使用ctypes庫調用Windows API/Mac Cocoa/Xlib屏幕操作依賴Pillow庫進行圖像處理 事件模擬流程&#xff1a; #mermaid-svg-1CGDRNzFNEffhvSa {font-family:"trebuchet ms",verdana,arial,sans…

Spring框架allow-bean-definition-overriding詳細解釋

Spring框架中&#xff0c;allow-bean-definition-overriding 是一個控制是否允許覆蓋同名Bean定義的配置屬性。以下是詳細說明&#xff1a; ?1. 作用? ?允許/禁止Bean定義覆蓋?&#xff1a;當Spring容器中檢測到多個同名的Bean定義時&#xff0c;此配置決定是否允許后續的…

機器人抓取位姿檢測——GRCN訓練及測試教程(Pytorch)

機器人抓取位姿檢測——GRCN訓練及測試教程(Pytorch) 這篇文章主要介紹了2020年IROS提出的一種名為GRCN的檢測模型,給出了代碼各部分的說明,并給出windows系統下可以直接復現的完整代碼,包含Cornell數據集。 模型結構圖 github源碼地址:https://github.com/skumra/robo…

在web應用后端接入內容審核——以騰訊云音頻審核為例(Go語言示例)

騰訊云對象存儲數據萬象&#xff08;Cloud Infinite&#xff0c;CI&#xff09;為用戶提供圖片、視頻、語音、文本等文件的內容安全智能審核服務&#xff0c;幫助用戶有效識別涉黃、違法違規和廣告審核&#xff0c;規避運營風險。本文以音頻審核為例給出go語言示例代碼與相應結…

GraphRAG知識庫概要設計展望

最近研究了一下GraphRAG&#xff0c;寫了一個文檔轉換工具還有圖可視化工具&#xff0c;結合langchain構建RAG經驗&#xff0c;還有以前的數據平臺&#xff0c;做了一個知識庫概要設計&#xff0c;具體應用歡迎留言探討。 一、GraphRAG整體概述 GraphRAG圖基檢索增強生成&…

Android Studio 日志系統詳解

文章目錄 一、Android 日志系統基礎1. Log 類2. 日志級別 二、Android Studio 中的 Logcat1. 打開 Logcat2. Logcat 界面組成3. 常用 Logcat 命令 三、高級日志技巧1. 自定義日志工具類2. 打印方法調用棧3. 打印長日志4. JSON 和 XML 格式化輸出 四、Logcat 高級功能1. 自定義日…

深度對比:Objective-C與Swift的RunTime機制與底層原理

1. RunTime簡介 RunTime&#xff08;運行時&#xff09;是指程序在運行過程中動態管理類型、對象、方法等的機制。Objective-C 和 Swift 都擁有自己的運行時系統&#xff0c;但設計理念和實現方式有很大不同。理解 RunTime 的底層原理&#xff0c;是掌握 iOS 高級開發的關鍵。…

使用手機錄制rosbag包

文章目錄 簡介錄制工具錄制步驟錄制設置設置IMU錄制頻率設置相機分辨率拍照模式錄制模式數據制作獲取數據數據轉為rosbag查看rosbag簡介 ROS數據包(rosbag)是ROS系統中用于記錄和回放傳感器數據的重要工具,通常用于算法調試、系統測試和數據采集。傳統上,rosbag依賴于ROS環…

淺談PCB傳輸線(一)

前言&#xff1a;淺談傳輸線的類型&#xff0c;以及傳輸線的一些行為特性。 1.傳輸線的種類 2.互連線被視為傳輸線的場景 3.傳輸線的行為特性*** 1.傳輸線的種類 PCB 中的信號傳輸線通常有兩種基本類型: 微帶線和帶狀線。此外&#xff0c;還有第三種類型–共面線(沒有參考平面…

【angular19】入門基礎教程(一):項目的搭建與啟動

angular現在發展的越來越能完善了&#xff0c;在vue和react的強勢競爭下&#xff0c;它迎來了自己的巨大變革。項目工程化越來越好&#xff0c;也開始擁抱了vite這種高效的構建方式。所以&#xff0c;我們有必要來學習這么一個框架了。 項目實現效果 nodejs環境 Node.js - v^…

在前端應用領域驅動設計(DDD):必要性、挑戰與實踐指南

引言 領域驅動設計&#xff08;Domain-Driven Design&#xff0c;簡稱 DDD&#xff09;起源于后端復雜業務系統建模領域&#xff0c;是 Eric Evans 在 2003 年提出的一套理論體系。近年來&#xff0c;隨著前端工程化與業務復雜度的持續提升&#xff0c;"前端也要 DDD&quo…

一文了解 模型上下文協議(MCP)

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;是由Anthropic公司于2024年11月推出的一項開放標準協議&#xff0c;旨在解決大型語言模型&#xff08;LLM&#xff09;與外部數據源和工具之間的通信問題。其核心目標是通過提供一個標準化的接口&…

面向全球的行業開源情報體系建設方法論——以易海聚實戰經驗為例

在全球數字化轉型加速的背景下&#xff0c;如何精準鎖定目標領域的關鍵信息源&#xff0c;構建可持續迭代的情報網絡&#xff0c;已成為企業戰略決策的核心能力。深圳易海聚信息技術有限公司&#xff08;以下簡稱“易海聚”&#xff09;深耕開源情報領域十余年&#xff0c;其自…

UDP協議詳解+代碼演示

1、UDP協議基礎 1. UDP是什么&#xff1f; UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是傳輸層的核心協議之一&#xff0c;與TCP并列。它的主要特點是&#xff1a;???? 無連接&#xff1a;通信前不需要建立連接&#xff08;知道對端的…

基于大模型的膽總管結石全流程預測與臨床應用研究報告

目錄 一、引言 1.1 研究背景 1.2 研究目的與意義 1.3 研究方法和創新點 二、大模型在膽總管結石預測中的應用原理 2.1 大模型概述 2.2 模型構建的數據來源與處理 2.3 模型訓練與優化 三、術前預測與準備 3.1 術前膽總管結石存在的預測 3.2 基于預測結果的術前檢查方…