掌握Vue计算属性的应用

随着前端开发的发展,Vue 已经成为了前端开发的主流框架之一。在 Vue 中,计算属性是一个非常重要的概念,它可以让我们更好地管理数据和逻辑,让代码更加简洁易懂。

🍃计算属性的定义

计算属性是 Vue 中一个非常重要的概念,它允许我们基于现有的数据计算出一个新的数据,这个新的数据可以被其他组件使用。计算属性本质上是一个方法,它和其它方法的区别在于,计算属性是一个有缓存的方法,它只有在它所依赖的属性发生改变时才会重新计算。

一个简单的计算属性可以这样定义:

computed: {fullName: function() {return this.firstName + ' ' + this.lastName;}
}

在这个例子中,我们定义了一个名为 fullName 的计算属性。它使用了当前组件的 firstName 和 lastName 两个属性计算出了一个新的值,这个新的值可以被其它组件使用。

🍃计算属性的使用方法

计算属性的使用方法非常简单,只需要在 Vue 组件的 computed 属性中声明一个对象,对象中的每个属性都是一个计算属性,这个属性的值就是计算属性的值。

下面是一个在 HTML 中使用计算属性的例子:

<template><div><p>First Name: {{ firstName }}</p><p>Last Name: {{ lastName }}</p><p>Full Name: {{ fullName }}</p></div>
</template><script>
export default {data() {return {firstName: 'John',lastName: 'Doe',};},computed: {fullName() {return this.firstName + ' ' + this.lastName;},},
};
</script>

在这个例子中,我们定义了一个 fullName 计算属性,它使用了 firstName 和 lastName 两个属性计算出了一个新的值,并在 HTML 中渲染出来。

🍃计算属性的Getter和Setter方法

🍂Getter方法

Getter方法用于获取计算属性的值。在Vue组件中,你可以通过定义一个计算属性的getter方法来获取该属性的值。Getter方法没有参数。示例如下:

computed: {fullName() {return this.firstName + ' ' + this.lastName;},
},

在这个例子中,fullName 是一个计算属性,根据 firstName 和 lastName 计算出全名。每当 firstName 或 lastName 的值发生变化时,fullName 会自动重新计算并返回新的值。

🍂Setter方法

Setter方法用于设置计算属性的值。你可以通过提供一个setter方法来实现对计算属性的修改。Setter方法接收一个参数,用于接收新的值。示例如下:

computed: {fullName: {get() {return this.firstName + ' ' + this.lastName;},set(value) {const [firstName, lastName] = value.split(' ');this.firstName = firstName;this.lastName = lastName;},},
},

在这个例子中,fullName 是一个计算属性,根据 firstName 和 lastName 计算出全名。通过提供一个setter方法,我们可以通过修改 fullName 的值来同时修改 firstName 和 lastName。

使用示例:

this.fullName = 'John Doe';
console.log(this.firstName); // 输出 John
console.log(this.lastName); // 输出 Doe

在这个示例中,我们通过修改 fullName 的值为 ‘John Doe’,利用setter方法自动将其分割为 firstName 和 lastName 并分别赋值。这个示例展示了computed属性getter和setter方法的用法。

🍃计算属性的优缺点

计算属性的优点很明显,它可以让我们更好地管理数据和逻辑,让代码更加简洁易懂。除此之外,计算属性还有以下优点:

  • 🖌️计算属性有缓存,它只有在它所依赖的属性发生改变时才会重新计算,这样可以提高应用的性能。

  • 🖌️计算属性可以被其他计算属性和方法所依赖,这样可以实现更加复杂的数据和逻辑管理。

不过,计算属性并不是没有缺点的,以下是它的两个主要缺点:

  • 🖌️计算属性只能进行简单的计算,不能进行复杂的操作,比如网络请求。

  • 🖌️计算属性的值是只读的,不能直接改变,需要通过改变它所依赖的属性来改变它的值。

🍃带参数的计算属性

有时候我们需要在计算属性中传入一些参数,这时我们可以使用带参数的计算属性。

下面是一个带参数的计算属性的例子:

import { mapState } from 'vuex';export default {computed: {fullName() {return this.getFullName('John', 'Doe');},...mapState({count: state => state.count}),},methods: {getFullName(firstName, lastName) {return firstName + ' ' + lastName;},},
};

在这个例子中,我们定义了一个 getFullName 方法,它有两个参数 firstName 和 lastName。然后在计算属性 fullName 中调用了这个方法,并传入了参数 ‘John’ 和 ‘Doe’。这样就可以在计算属性中使用带参数的方法来进行计算。

🍃 计算属性的缓存

计算属性具有缓存的特性,也就是说在计算属性所依赖的属性没有发生改变的情况下,计算属性的值会被缓存起来,下次再次访问时直接返回缓存的值,而不需要重新计算。

这个缓存的特性可以大大提高应用的性能,特别是当有很多依赖于计算属性的组件时。

例如:

computed: {fullName() {console.log('计算属性 fullName 被调用');return this.firstName + ' ' + this.lastName;},
},

在这个例子中,我们在计算属性 fullName 中使用了 console.log 方法来输出一个调试信息。如果在组件中多次访问 fullName ,你会发现只有第一次会触发计算属性的计算,后续的访问都会直接返回缓存的结果。

🍃计算属性 vs 方法

在 Vue 组件中,除了使用计算属性,还可以使用方法来进行类似的计算操作。那么什么时候应该使用计算属性,什么时候应该使用方法呢?

一般来说,如果某个值是依赖于其他数据变化而变化的,并且这个值是会被频繁使用的,那么就应该使用计算属性。因为计算属性具有缓存的特性,能够提高应用的性能。

而如果某个操作是有副作用的,比如发起网络请求或者修改数据,那么就应该使用方法。

另外,计算属性还有一个特性,就是可以被其他计算属性所依赖。也就是说,计算属性可以组合成更加复杂的逻辑,让代码更加清晰易懂。

🍃结论

通过本篇博客的介绍,我们了解了计算属性的定义、使用方法、优缺点等方面的知识。计算属性是 Vue 中非常重要和常用的概念,能够让我们更好地管理数据和逻辑,让代码更加简洁易懂。


🏫博客主页:魔王-T

🥝大鹏一日同风起 扶摇直上九万里

❤️感谢大家点赞👍收藏⭐评论✍️


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

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

相关文章

世微 低功耗 PFM DC-DC 升压芯片 AP8105 干电池手持设备驱动IC

概述 AP8105 系列产品是一种高效率、低纹波、工作频率高的 PFM 升压 DC-DC 变换器。AP8105 系列产品仅需要四个外围元器件&#xff0c;就可完成将低输入的电池电压变换升压到所需的工作电压&#xff0c;非常适合于便携式 1&#xff5e;4 节普通电池应用的场合。电路采用了高性能…

mybatis快速入门(基于Mapper接口编程)

1、准备数据模型&#xff0c;建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom&qu…

测试相关-面试高频

测试面试相关 面试 测试的具体场景 功能测试 具体的测试工具Jmeter Postman selenium pytest 怎么看待测试的潜力与挑战 软件测试是正在快速发展&#xff0c;充满挑战的领域。尽管现在许多自动化测试软件的出现使得传统手工测试的方式被代替&#xff0c;但自动化测试工具的…

低功耗无线SOC芯片Si24R03

Si24R03是一款高度集成的低功耗无线SOC芯片&#xff0c;芯片为QFN32 5x5mm封装&#xff0c;集成了资源丰富的MCU内核与2.4G收发器模块&#xff0c;最低功耗可达1.6uA&#xff0c;极少外围器件&#xff0c;大幅降低系统应用成本&#xff0c;同时配套有成熟的开发调试软件和丰富的…

Oracle SQL优化

1、书写顺序和执行顺序 在Oracle SQL中&#xff0c;查询的书写顺序和执行顺序是不同的。 1.1SQL书写顺序如下&#xff1a; SELECTFROMWHEREGROUP BYHAVINGORDER BY 1.2 SQL执行顺序 FROM&#xff1a;数据源被确定&#xff0c;表连接操作也在此步骤完成。 WHERE&#xff1a;对…

MySQL进阶知识:SQL性能优化

目录 SQL性能分析 SQL执行频率 慢查询日志 profile详情 explain执行计划 索引的使用 最左前缀法则 范围查询 索引列运算 字符串加引号 模糊查询 or连接的条件 数据分布影响 SQL提示 覆盖索引 前缀索引 索引设计原则 SQL优化 insert优化 主键优化 页分裂 …

【Docker】安装RabbitMQ

1.拉取镜像 docker pull rabbitmq 2.运行容器 docker run \-e RABBITMQ_DEFAULT_USERitcast \-e RABBITMQ_DEFAULT_PASS123321 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq 3.安装管理页面的插件 进入容器内部 dock…

Linux C语言 24-格式化操作

Linux C语言 24-格式化操作 本节关键字&#xff1a;输入输出格式化参数 相关C库函数&#xff1a;printf、scanf、fprintf、fscanf 参考本栏目第20篇文章&#xff1a;Linux C语言 20-文件I/O 中的格式化参数部分。

前端项目环境的搭建

一、下载并且安装Node&#xff08;不安装node&#xff0c;就安装nvm。nvm安装教程&#xff09;&#xff1a; 1.官网下载Node&#xff1a;https://nodejs.org/en/ 2.测试nodejs安装是否成功&#xff1a; 在windows powerShell中输入node -v 和 npm -v&#xff0c;看到版本号就…

Leetcode 236 二叉树的最近公共祖先

题意理解&#xff1a; 二叉树的最近公共祖先&#xff1a; 简单理解&#xff0c;就是p和q值的那两个节点&#xff0c;不断向上返回&#xff0c;然后会在一个点汇合&#xff0c;那么他们第一次汇合的这个点就是他们的最近公共祖先。 解题的思路就是&#xff1a; 如果这一层找到了…

Mac下更新python

1. 查看python版本 python3 -V2. 更新python版本 brew upgrade python3. 查看python3的路径&#xff1a; which python34. 修改.bash_profile文件 vim ~/.bash_profile插入python默认执行文件 alias python"/usr/local/bin/python3"5. 应用环境变量 source ~/.…

CRM与ERP如何协同服务于企业

在当今的商业环境中&#xff0c;客户关系管理&#xff08;CRM&#xff09;和 Enterprise Resource Planning&#xff08;ERP&#xff09;是两个不可或缺的系统。它们各自独立&#xff0c;但也可以协同工作&#xff0c;以提供更高效、更全面的企业解决方案。这种协同作用可以在销…

JAVA的一些便捷性方法(Object)

在IDEA中&#xff0c;如何查看JDK的源码&#xff1f; CTRL B; 常用方法&#xff1a; 1.equals&#xff08;&#xff09; booleanequals(Object obj) 指示其他某个对象是否与此对象“相等”。 与 的比较&#xff1a; &#xff0c;即可判断基本类型&#xff0c;也…

lodash中foreach踩坑

什么是lodash Lodash 是一个 JavaScript 实用工具库&#xff0c;提供了很多用于处理数据、简化开发等方面的功能。它提供了一组常用的工具函数&#xff0c;用于处理数组、对象、字符串等常见数据结构&#xff0c;同时也包含了一些函数式编程的工具。对于前端开发来说&#xff…

SAE-J1939协议入门解析

文章目录 前言一、SAE J1939物理层二、SAE J1939数据链路层1、帧结构1.1、帧起始&#xff08;SOF&#xff09;1.2、优先级&#xff08;P&#xff09;1.3、扩展数据页EDP&#xff08;R&#xff09;1.4、数据页&#xff08;DP)1.5、替换远程请求Substitute Remote Request &#…

JavaScript解构数组

还记得之前我们是如何读取到数组里面的元素的么&#xff1f; const arr [2, 3, 4]; const a arr[0]; const b arr[1]; const c arr[2];然后通过这个方式去读取数组中的数据&#xff1b; 现在我们可以使用解构赋值的方法去实现 const [x, y, z] arr; console.log(x, y, …

基于视觉传感器的自主扫雷机器人设计与实现

摘要&#xff1a; 在当今的世界安全形势下&#xff0c;扫雷小车的出现可以减少各国人员在扫雷过程中的人员伤亡&#xff0c;扫雷小车实用性能强更适合在军事化领域或者是民用领域上应用。让它具有光明的发展前景。针对这一情况&#xff0c;本毕业设计就对自主扫雷小车进行研究…

Windows系统如何远程控制Realme手机?

realme使用的是realme UI系统。realme UI是realme研发的操作系统&#xff1b;realme UI 1.0基于安卓10系统&#xff0c;realme UI 2.0基于安卓11系统&#xff0c;realme UI 3.0基于安卓12系统。 对于安卓4.0及以上系统的手机&#xff0c;都可以通过软件AirDroid实现远程控制。 …

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步?

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步&#xff1f; 文章目录 【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步&#xff1f;一、简介软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步1 安…

QHash使用介绍与代码演示

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 一、QHash的基本用法二、QHash存储自定义类型三、QHash和QMap的区别QHashQMap使用场景QHash 是 Qt 框架中用于存储键-值对的哈希表实现。它提供了一种快速查找的方式,使得通过…