Vue学习:计算属性Computed

news2024/11/15 17:38:09

计算属性可以实时监听 data节点中数据的变化,并 return 一个计算后的新值,供组件渲染 DOM 时使用,计算属性需要以 function 函数的形式声明到组件的 computed 节点中。

计算属性的使用注意点:

(1)计算属性必须定义在 computed 节点中
(2)计算属性必须是一个 function 函数
(3)计算属性必须有返回值
(4)计算属性必须当做普通属性使用

计算属性computed VS 方法methods

相对于方法(methods)来说,计算属性会缓存计算的结果,只有计算属性的依赖项发生变化时,才会重新进行运算,因此计算属性的性能更好。下面案例很好的说明了这一点。

<!DOCTYPE html>
<html>
    <head>
        <title>computed 应用示例</title>
         <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    </head>
    <body>
        <div id="app"> 
          <p>count的值是{{count}},乘2后是{{mul}}</p>  
          <p>count的值是{{count}},乘2后是{{mul}}</p>        
          <p>count的值是{{count}},乘2后是{{mul}}</p>        
          <p>sum的值是{{sum}},乘2后是{{mul2()}}</p>    
          <p>sum的值是{{sum}},乘2后是{{mul2()}}</p>        
          <p>sum的值是{{sum}},乘2后是{{mul2()}}</p>        
        </div>    
    </body>
    <script type="text/javascript">
        const RootComponent = {       //创建根组件
            data () {
                return {
                    count:5,
                    sum:10,
                }      
            },
            computed:{              //计算属性
             mul(){
                console.log('计算属性被执行了');
                return this.count*2
             }
            } ,   
            methods:{               //方法选项
                mul2(){
                    console.log('方法被执行了');
                    return this.sum * 2
                }
            }       
        }         
        const vueApp = Vue.createApp(RootComponent)    //创建Vue应用实例 
        vueApp.mount("#app")       //挂载处理       
    </script>    

</html>

从console控制台执行结果可以看出,computed计算属性被执行了1次,methods方法被执行了3次。
在这里插入图片描述

计算属性案例-图书总价格

在这里插入图片描述
代码如下:

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>计算属性案例-图书总价格</title>
		<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
	</head>
	<body>
		<div id='app'>
			<table>
				<thead>
					<tr>
					<th>Id</th>
					<th>书名</th>
					<th>封面</th>
					<th>价格</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="item in books" :key="item.id">
						<td>{{ item.id }}</td>
						<td>{{ item.name }}</td>
						<td><img :src="item.pic" alt=""></td>
						<td>{{ item.price.toFixed(2) }}</td>
					</tr>
				</tbody>
				<tfoot>
				<tr>	<th></th><th></th><th>图书总价格:</th><th>{{totalPrice}}</th></tr>
				</tfoot>
			</table>
		</div>
		<script>
			var vm = {
				data() {
					return {
						books: [{
								id: 1001,
								name: '啊哈!算法',
								pic:'./images/aha.jpg',
								price: 59.80,
							},

							{
								id: 1002,
								name: '人工智能(第2版)',
								pic:'./images/AI.jpg',
								price: 108.00
							},
							{
								id: 1003,
								name: 'JavaScriptDOM编程艺术',
								pic:'./images/jscript.jpg',
								price: 49.00
							},
							{
								id: 1004,
								name: ' Python基础教程',
								pic:'./images/python.jpg',
								price: 79.00
							},
						]
					}
				},
				computed: {
					totalPrice() {
						let total = 0;
						for (let item of this.books) {
							total += item.price
						}
						return total.toFixed(2)
					},
				},
			}
			const vueApp = Vue.createApp(vm)
			vueApp.mount('#app')
		</script>
	<style>
		td,th{
			padding: 10px 20px;
			text-align: center;
		}
		td img{
			width: 80px;
		}
	</style>
	</body>
</html>

totalPrice() 的另一种常规写法

totalPrice() {
	let total = 0;
	for (let i = 0; i < this.books.length; i++) {
		total += this.books[i].price;
	}
	return total.toFixed(2)
},

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

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

相关文章

PDF转换器竟能如此简单?这款工具让无数人为之疯狂,你试过吗?

现在大家都用电脑办公&#xff0c;PDF文件因为不管在哪儿都能打开&#xff0c;而且内容不会乱&#xff0c;所以特别受欢迎。但有时候也挺麻烦的&#xff0c;比如你得改改里面的内容或者转成别的格式。到了2024年&#xff0c;如果你还被PDF文件搞得头疼&#xff0c;那就试试这四…

Cross Explosion

考查找。 线性查找上下左右四个方向看到的第一个的墙的位置复杂度O(n^2)&#xff0c;在Q取到2e5的情况下直接爆掉。 这里应使用二分查找&#xff0c;对某一行、列进行二分&#xff0c;使用set实现墙的位置存储。 #include<bits/stdc.h> using namespace std; #define…

IBM中国研发部裁员:全球化背景下的IT产业变局与应对之道

裁员风波中的思考与机遇 前言了解霍尼韦尔的“东方服务东方”施耐德电气的“中国中心”战略对比与分析 中国信息技术(IT)行业展现出蓬勃发展的前景**政府支持与政策导向****技术创新与应用****市场规模与需求****人才培养与就业**国际化与开放合作总结 前言 如何看待IBM中国研发…

C#--CM+Fody+HCWPF开发组合

CM&#xff1a;Caliburn.Micro(简称CM)一经推出便备受推崇&#xff0c;作为一款MVVM开发模式的经典框架&#xff0c;越来越多的受到wpf开发者的青睐.我们看一下官方的描述&#xff1a;Caliburn是一个为Xaml平台设计的小型但功能强大的框架。Micro实现了各种UI模式&#xff0c;用…

大学生租房平台:SpringBoot技术实现详解

第3章 系统分析 面对即将开发的系统&#xff0c;进行提前的分析是必要的。这也是开发流程中必须有的环节。通常分析系统期间&#xff0c;主要涉及的内容包括系统开发可行性问题&#xff0c;对系统功能和性能的分析等问题。 3.1 可行性分析 在正式对需要建设的项目进行投资前&am…

Gmtracker_深度学习驱动的图匹配多目标跟踪项目启动与算法流程

Gmtracker深度学习驱动的图匹配多目标跟踪项目启动与算法流程 说明&#xff1a;对于Gmtracker多目标跟踪算法中涉及到的QP或者是QAP等一些有关图匹配的问题&#xff0c;不做过多的说明只提供源代码中通过图网络的具体实现细节。 对于配置环境时产生的报错的具体信息&#xff0c…

Unity Apple Vision Pro 开发(八):模型分离与组装

XR 开发者社区链接&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 课程试看&#xff1a;https://www.bilibili.com/video/BV11b421E74g 课程完整版&#xff0c;答疑仅社区成员可见&#xff0c;可以通过文章开头的链接加入…

调度算法及其性能指标

一、调度算法的评价指标 1.CPU利用率 由于早期的CPU造价极其昂贵&#xff0c;因此人们会希望让CPU尽可能多地工作 CPU利用率:指CPU“忙碌”的时间占总时间的比例。 利用率忙碌的时间/总时间 Eg: 某计算机只支持单道程序&#xff0c;某个作业刚开始需要在CPU上运行5秒&a…

python画图|极坐标中画散点图

python极坐标画图时&#xff0c;不仅可以画实线图&#xff0c;也可以画散点图。 实线图画法如下述链接。 python画图|极坐标画图基础教程-CSDN博客 今天我们一起学习一下散点图画法。 【1】官网教程 首先依然是导航到官网&#xff0c;乖乖学习官网教程&#xff1a; Scatt…

产品3D交互展示是什么?3D可视化有什么优势?

产品3D交互展示是一种通过互联网平台&#xff0c;利用3D技术对产品进行全方位、多角度展示的方式。它允许用户通过旋转、缩放、移动等操作&#xff0c;以更直观、更互动的方式了解产品的外观、结构和细节。这种展示方式不仅提升了用户的参与感和体验感&#xff0c;还增强了产品…

【触想智能】工业一体机在物流领域上的四大应用分析

随着物流业的快速发展&#xff0c;工业一体机在物流领域上的应用越来越普遍。工业一体机是一种高级智能设备&#xff0c;是多种技术的综合应用&#xff0c;包括机械、电子、计算机、通讯等。 在物流行业中&#xff0c;工业一体机可以发挥其先进的技术和功能&#xff0c;提高物流…

重磅资源来袭。快看看有没有你要的那一款!

Java 相关的技能主要包括以下几个方面‌&#xff1a; 资源在末尾 ‌Java编程语言基础‌&#xff1a;这是Java开发的基础&#xff0c;包括熟悉Java的语法、数据类型、控制结构、异常处理、面向对象编程&#xff08;OOP&#xff09;等基本概念。‌Java EE和Spring框架‌&#x…

【算法】模拟退火

一、引言 模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种启发式搜索算法&#xff0c;它通过模拟物理中的退火过程来解决优化问题。这种算法能够跳出局部最优解&#xff0c;寻找全局最优解&#xff0c;特别适用于解决复杂的优化问题。 二、算法原理 模拟退…

NS4263 3.0Wx2 双声道 AB/D 类双模音频功率放大器附加耳机模式

1 特性 ● 工作电压范围:3.0V-5.25V ● AB 类和 D类工作模式切换 ● 一线脉冲控制工作模式与关断模式 ● 内置立体声耳机输出功能 ● 输出功率 3WClass D/Load4ohm ● THDN0.1%VDD5V/Po1W ● 优异的全带宽 EMI抑制能力 ● 优异的“上电和掉电”噪声抑制 ● 内置过流保护、欠压保…

PMP证书可不可以挂靠?看看考过的人怎么说

或许我们经常听到人们说可以把律师证、注册会计师证等挂靠在单位&#xff0c;从而每年获得额外收入。但是需要说明的是&#xff0c;PMP证书并不适用于挂靠这种情况。因为PMP并不属于我国体制内的职业资格证书&#xff0c;企业升级资质也不需要使用PMP证书&#xff0c;所以PMP是…

unity导入半透明webm + AE合成半透明视频

有些webm的文件导入unity后无法正常播报&#xff0c;踩坑好久才知道需要webm中的&#xff1a;VP8 标准 现在手上有几条mp4双通道的视频&#xff0c;当然unity中有插件是可以支持这种视频的&#xff0c;为了省事和代码洁癖&#xff0c;毅然决然要webm走到黑。 mp4导入AE合成半透…

如何使用dcmtk将dcm数据集中信息输出到可读文件

1. 缘起 在生成RDSR报告时候&#xff0c;代码中已经将患者的一些信息写入到dcm数据集中&#xff0c;但是最后保存的文件中没有这些值&#xff0c;因此需要将过程中的数据集信息打印出来&#xff0c;看是在什么地方出现问题了。 2. 将数据值保存到文件 std::unique_ptr<Dc…

“月薪3w,被人工智能玩弄。“

自从有了萝卜快跑无人驾驶车&#xff0c;一天天的都要被这些梗笑死&#xff1a; 萝卜快跑的萝卜&#xff0c;是指的乘客我吧&#xff1f;&#xff1f;&#xff1f; 15公里的路程&#xff0c;乘客自己追了14公里&#xff0c;还停在路中央让乘客上车哈哈哈哈&#xff01; 好消…

MATLAB求解微分方程和微分方程组的详细分析

目录 引言 微分方程的定义 MATLAB求解常微分方程 参数分析&#xff1a; MATLAB求解偏微分方程 刚性和非刚性问题 总结 引言 微分方程在物理、工程、经济和生物等多个领域有着广泛的应用。它们用于描述系统中变量与其导数之间的关系&#xff0c;通过这些方程可以解释和预…

如何通过可视化大屏,打通智慧城市建设的“最后一公里”?

在智慧城市的宏伟蓝图中&#xff0c;技术的融合与创新是推动城市发展的关键力量。然而&#xff0c;真正的挑战在于如何将这些技术成果转化为市民的实际体验&#xff0c;实现智慧城市建设的“最后一公里”。可视化大屏&#xff0c;作为连接技术与市民的桥梁&#xff0c;正以其独…