【Vue计算属性详细介绍】

Vue计算属性详细介绍

  • 1. 计算属性
  • 2. 基本特点
  • 3. 定义方法
  • 4. Getter 和 Setter
  • 5. 计算属性 vs 方法
  • 6. 计算属性 vs 侦听器
  • 7. 限制

1. 计算属性

计算属性(Computed properties)是Vue框架中一个非常重要的概念,它们用于声明式地定义可供模板读取的响应式的属性,通常依赖于组件的数据,并且只有当它们的依赖值发生变化时才会重新计算。

计算属性用于快速计算视图(View)中显示的属性,这些计算将被缓存,并且只在需要时更新

使用场景:当一个属性需要复杂的逻辑运算之后才能获取其值,可以使用计算属性,在一个计算属性中可以完成各种复杂的逻辑,包括运算,方法调用等,只要最终返回一个结果就可以了

声明计算属性的格式:

computed:{xxx:function(){}
}

示例: 使用计算属性,计算书本的总价
定义测试数据,和计算属性,计算属性遍历书本记录,计算总价

var vm = new Vue({el: '#app',data: {//定义测试数据books: [{name:'红楼梦', price:"120"},{name:'三国演义', price:"100"},{name:'水浒传', price:"90"},]},//计算属性computed: {compTotal: function() {let sum = 0;for(index in this.books) {sum += parseInt(this.books[index].price);}return sum;}}});

计算属性在页面中的使用

<div v-for="book in books">{{book.name}} -> {{book.price}}
</div><div>总价:{{compTotal}}
</div>

关于var let

var声明为全局属性
let为ES6新增,可以声明块级作用域的变量(局部变量)
建议使用let声明变量

计算属性的主要特点和用法如下所述:

2. 基本特点

  1. 性能优化:计算属性是基于它们的响应式依赖进行缓存的,只在相关响应式依赖发生改变时才会重新计算,这意味着如果依赖没有发生变化,即便你多次访问该计算属性,其值也不会重复计算,而是直接返回缓存值。

  2. 响应式:计算属性本身是响应式的,如果计算属性依赖的数据发生变化,依赖于计算属性的任何视图或其他计算属性也会更新。

  3. 声明式:你只需要定义计算属性的getter函数,Vue会负责跟踪它依赖的所有响应式属性,并在它们发生改变时更新。

3. 定义方法

在组件的计算属性区域内,以键值对的形式定义,键是计算属性名,值是一个函数,这个函数的返回值将作为计算属性的值。

computed: {// 定义一个计算属性fullAddressfullAddress: function () {return this.address.street + ', ' + this.address.city;}
}

在模板或其他计算属性中,可以像访问常规属性那样访问计算属性fullAddress

<p>地址: {{ fullAddress }}</p>

4. Getter 和 Setter

默认情况下,计算属性是只读的,但你也可以提供一个setter,当你需要在设置计算属性时执行一些操作。

computed: {fullName: {// getterget: function () {return this.firstName + ' ' + this.lastName},// setterset: function (newValue) {var names = newValue.split(' ')this.firstName = names[0]this.lastName = names[names.length - 1]}}
}

通过设置fullName,Vue会自动分配firstNamelastName

5. 计算属性 vs 方法

你可以将同样的函数定义为一个方法而不是计算属性,两者之间的区别是计算属性是基于它们的依赖进行缓存的,相比之下,方法调用将总是执行该函数,每次触发重新渲染时它们都会被调用。

6. 计算属性 vs 侦听器

Vue 也提供了一种方法来观察和响应数据变化,即侦听器(watchers),然而,通常更推荐使用计算属性而不是命令式地处理数据变化:

  • 计算属性是基于数据的变化声明式地定义最终展示的数据,代码更清晰和简洁。
  • 侦听器适合执行响应数据变化的异步操作或较为复杂的逻辑。

7. 限制

在使用计算属性时,应注意以下限制:

  • 不应在计算属性内部执行异步操作,因为计算属性的返回值不会等待异步操作完成。
  • 不能在计算属性的getter函数中修改其依赖的响应式数据,这样会引起不可预见的结果。

在实际开发中,适当使用计算属性可以极大提升应用的性能和可维护性,尽量利用计算属性提供的缓存和响应式特性,编写清晰且高效的代码。

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

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

相关文章

2023极客大挑战web小记

拿到题目提示post传参还以为是道签到题 刚开始直接把自己极客大挑战的username以及password怼上去&#xff0c;但是不对。看看F12&#xff0c;有提示。 当一个搜索蜘蛛访问一个站点时&#xff0c;它会首先检查该站点根目录下是否存在robots.txt&#xff0c;如果存在&#xff0c…

PHP AES加密:保护数据安全的高级加密技术

PHP AES加密&#xff1a;保护数据安全的高级加密技术 ASE&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法&#xff0c;也被称为Rijndael加密算法。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计的&#xff0c;于2001年被美国国家标准与技术研…

python模块win32com 操作wps

目录 一:操作word 二:操作excel 三:操作ppt win32com 是 Python 的一个扩展库,它允许 Python 程序与 Windows 的 COM(Component Object Model)组件进行交互。通过 win32com,你可以从 Python 脚本中控制和操作各种 Windows 应用程序,例如 Microsoft Excel、Word、Pow…

删除rpm包

要查看 RPM 包的名称&#xff0c;您可以使用 RPM 包管理器提供的查询功能。这些功能允许您查看已安装的 RPM 包列表以及每个包的详细信息。以下是几种查看 RPM 包名称的方法&#xff1a; 列出所有已安装的 RPM 包: 如果您想查看系统上所有已安装的 RPM 包&#xff0c;可以使用以…

部署Tomcat及其负载均衡

Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP程序的首选。一般来说&#xff0c;Tomcat虽然和Apache或者Nginx这些Web服务器一样&#xf…

CSS 下载进度条

<template><view class=btn>下载中</view></template><script></script><style>/* 设置整个页面的样式 */body {width: 100vw; /* 页面宽度为视口宽度 */background: #000000; /* 背景颜色为白色 */display: flex; /* 使用 flex…

linux GDB and GDB Sever

概念&#xff1a; GDB&#xff08;GNU Debugger&#xff09;是一个用于调试程序的强大工具。它是GNU项目的一部分&#xff0c;支持多种编程语言&#xff0c;包括C、C等。GDB 提供了一组命令和功能&#xff0c;允许跟踪检查程序的内部状态&#xff0c;跟踪代码的执行过程&#…

MySQL题目示例

文章目录 1.题目示例 1.题目示例 09&#xff09;查询学过「张三」老师授课的同学的信息 SELECT s.*, c.cname, t.tname, sc.score FROM t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc WHERE t.tid c.tid AND c.cid sc.cid AND sc.sid s.sid …

一种具有轨迹优化的无人驾驶车实时运动规划器 论文阅读

论文题目&#xff1a;A Real-Time Motion Planner with Trajectory Optimization for Autonomous Vehicles Abstract 本文的实时规划器首先将空间离散化&#xff0c;然后基于一组成本函数搜索出最佳轨迹。迭代优化所得到的轨迹的Path和Speed。post-optimization计算复杂度低&…

TF-IDF(Term Frequency-Inverse Document Frequency)算法详解

目录 概述 术语解释 词频&#xff08;Term Frequency&#xff09; 文档频率&#xff08;Document Frequency&#xff09; 倒排文档频率&#xff08;Inverse Document Frequency&#xff09; 计算&#xff08;Computation&#xff09; 代码语法 代码展示 安装相关包 测…

邮件开发客户:从吸引潜在客户到提高转化率的实用指南

做外贸的很多企业都习惯使用邮件作为沟通工具&#xff0c;所以我们也可以利用邮件发送开发信来进行客户开发。 为什么外贸企业喜欢使用邮件呢&#xff1f; 1、使用习惯 不同于我们国家习惯使用微信沟通&#xff0c;邮件始终是外国人在进行商务、营销、日常沟通等场合下常用且重…

2023 年度回顾与2024 年展望

时间如白驹过隙&#xff0c;转眼已经2024年了&#xff0c;本来打算2024年元旦那天写写年度回顾的&#xff0c;但是因为一些琐事耽误了&#xff0c;平时上班路程远回来也就懒得动了&#xff0c;一直就拖到今天才开始着手这个每年的例行公事。 2023年的回顾 回顾整个2023年&…

基于OCR的包装产品生产日期识别系统

基于OCR的包装产品生产日期识别系统 背景技术方案PaddleOCR模型应用数据挑战与解决方案优化策略 项目实施步骤结果与展望 背景 在工业生产中&#xff0c;产品包装上的生产日期信息是至关重要的&#xff0c;它关系到物资的时效性和质量。为了更快、更准确地提取这些信息&#x…

Redis中的Java客户端

一、Jedis Jedis是一个Java实现的Redis客户端连接工具。 Jedis使用非常简单&#xff0c;直接引入依赖。基于默认参数的Jedis连接池&#xff0c;初始化连接池类&#xff08;使用默认连接池参数&#xff09;JedisPool&#xff0c;获取一个Jedis连接Jedis jedisjp.getResource()…

.NET core 中的Kestrel 服务器

什么是Kestrel&#xff1f; Kestrel 是一个跨平台的Web服务器&#xff0c;会默认在ASP.NET Core 项目模板中对其进行配置。未使用 IIS 托管时&#xff0c;ASP.NET Core 项目模板默认使用 Kestrel。 Kestrel 的功能包括&#xff1a; 跨平台&#xff1a;Kestrel 是可在 Window…

从零开始的源码搭建:详解连锁餐饮行业中的点餐小程序开发

时下&#xff0c;点餐小程序成为了许多餐饮企业引入的一种创新工具&#xff0c;不仅方便了顾客的用餐体验&#xff0c;同时也提高了餐厅的运营效率。本文将详细探讨如何从零开始搭建一个源码&#xff0c;并深入解析连锁餐饮行业中的点餐小程序开发过程。 一、需求分析与规划 在…

如何使用Flash模拟EEPROM

目录 1、FLASH与EEPROM简介 2、FLASH模拟EEPROM原理 2.1、EERPOM数据结构 2.2、EERPOM物理结构 在讲解这篇博文前&#xff0c;首先要明白为什么使用Flash存储来模拟EEPROM&#xff1f; 主要有以下几个原因&#xff1a; 成本效益&#xff1a;许多微控制器(MCU)和系统芯片(SoC)内…

统计学-R语言-4.2

文章目录 前言单变量数据的描述分析分类型数据频数表条形图饼图 数值型数据数值型数据数据的集中趋势--均值数据的集中趋势--众数 离散程度离散程度--极差离散程度--四分位数极差离散程度--方差离散程度--加权方差离散程度--标准差离散程度--变异系数 数据的形状数据的形状--偏…

高级分布式系统-第7讲 分布式系统的时钟同步

顺序的分类 在分布式系统中&#xff0c; 顺序关系主要分为以下三类&#xff1a;时间顺序&#xff1a; 事件在时间轴上发生的先后关系。 无限时刻集组成有向时间轴&#xff0c; 时间顺序是通过时刻的顺序体现的。 因果顺序&#xff1a; 如果事件e1是事件e2发生的原因&#xf…

数据分析概述2(详细介绍机器学习

目录 1.名词解释&#xff1a;1.1算法和模型1.2参数和超参数 2.基础算法&#xff1a;3.高级算法&#xff1a;4.数据准备5.常用python包小结&#xff1a; 1.名词解释&#xff1a; 1.1算法和模型 算法&#xff1a;用于训练模型的方法&#xff0c;分为有监督学习、无监督学习、半…