Vue学习:6.认识计算属性
计算属性是 Vue.js 提供的一种特殊属性,用于在模板中动态计算和返回数据。计算属性使得在模板中使用动态计算的数据变得非常简洁和方便,同时又能保持响应式更新的特性,提高了代码的可读性和可维护性。
与方法(methods)的区别:
计算属性(Computed Properties)和方法(Methods)在 Vue.js 中都可以用来计算和返回数据,但它们之间有几个关键的区别:
缓存与非缓存:
- 计算属性:计算属性会根据它们的依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算其值。这意味着在同一依赖下多次访问计算属性时,只会执行一次计算,后续访问会直接返回缓存的值。
- 方法:方法每次被调用时都会重新执行其中的代码,不会进行缓存。每次调用方法都会重新计算其返回值。
语法:
- 计算属性:使用
computed
属性来定义计算属性,需要使用一个函数来计算并返回属性的值。 - 方法:在 Vue.js 组件中可以直接定义普通方法,然后在需要的地方调用这些方法来获取数据。
- 计算属性:使用
依赖追踪:
- 计算属性:Vue.js 能够自动追踪计算属性的依赖,并在依赖发生变化时自动重新计算属性的值。这意味着你无需手动管理计算属性的依赖关系。
- 方法:方法不具备自动的依赖追踪功能。如果方法内部依赖于响应式数据,你需要手动管理这些依赖关系。
用途:
- 计算属性:适用于基于响应式数据进行复杂的计算逻辑,例如过滤、排序、格式化等操作。常用于模板中直接引用,以简化模板的复杂度。
- 方法:适用于不依赖响应式数据或依赖较少的简单计算逻辑。常用于事件处理、方法调用等场景。
调用方式:
- 计算属性:在模板中直接像访问数据属性一样使用计算属性,不需要加括号。
- 方法:在模板中通过方法名加括号的方式调用方法。
一句话,计算属性适用于需要缓存和依赖追踪的复杂计算逻辑,而方法则适用于不需要缓存或依赖较少的简单计算逻辑。
计算属性实例:礼物清单
实现功能:
根据礼物清单,统计求和,求得礼物总数。
思路:
首先在computed里声明一个求和的计算属性(就是一个函数),然后在html里像普通属性一样使用。
代码:
html:
<div id="app">
<h3>黑仔的礼物</h3>
<table>
<tr>
<th>名称</th>
<th>数量</th>
</tr>
<tr v-for="(item, index) in gifts" :key="item.id">
<td>{{ item.name }}</td>
<td>{{ item.num }}</td>
</tr>
</table>
<p style="color: red;">总计:{{ total }}</p>
</div>
js:
<script>
const app = new Vue({
el: '#app',
data: {
gifts: [
{id: 1, name: '篮球', num: 1},
{id: 2, name: '本子', num: 10},
{id: 3, name: '铅笔', num: 10},
]
},
//在computed里声明
//对数组里的sum求和:使用reduce(sum, 0)
computed: {
total(){
let total = this.gifts.reduce((sum, item) => sum + item.num, 0)
return total
}
}
})
</script>
css:
<style>
table{
border-collapse: collapse;
}
th,td{
width: 200px;
height: 50px;
border: 1px solid black;
text-align: center;
}
</style>
Vue学习:6.认识计算属性的更多相关文章
- Vue学习笔记之计算属性和侦听器
0x00 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div> {{ message.split(''). ...
- Vue学习笔记之计算属性、内容分发、自定义事件
1. 计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数:简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化 ...
- Vue学习3:计算属性computed与监听器
下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- VUE 学习笔记 四 计算属性和监听器
1.计算属性 对于任何复杂逻辑,你都应当使用计算属性 <div id="example"> <p>Original message: "{{ me ...
- Vue学习笔记:计算属性
使用函数的缺点 如果我们想要将数据经过转化后再显示,或者多个数据结合起来进行显示,一般可以直接在数据渲染或者数据绑定的时候书写表达式 如果表达式过于复杂,或者逻辑太多的时候,我们可以将其封装在函数里, ...
- vue.js初探:计算属性和methods
在vue.js中,计算属性和methods方法的函数相同时,两者的最终执行结果都是相同的.然而不同的是,计算属性是基于它的依赖缓存.计算属性只有在它的相关依赖发生改变时才会重新取值.这就意味着只要 m ...
- Vue学习笔记【31】——Vue路由(computed计算属性的使用)
computed计算属性的使用 默认只有getter的计算属性: <div id="app"> <input type="text" ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十八║Vue基础: 指令(下)+计算属性+watch
回顾 今天来晚辣,给公司做了一个小项目,一个瀑布流+动态视频控制的DEMO,有需要的可以联系我,公司的项目就不对外展示了(一个后端程序员真的要干前端了哈哈哈). 书接上文,昨天正式的开始了Vue的代码 ...
- 【Vue 2.x】计算属性
Vue对象,按照现在的学习进度,可以分为: 其中el代表作用的HTML元素: data代表el中的所有数据: methods代表el中所有元素上的事件: computed代表计算属性,用于计算data ...
- Vue的指令系统、计算属性和表单输入绑定
指令系统 指令 (Directives) 是带有 v- 前缀的特殊特性.指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变 ...
随机推荐
- Quick BI产品核心功能大图(五)移动端:让数据在更多业务场景中流通
简介:将数据更好的融入日常工作中,一个重要的前提条件就是多端多渠道的数据触达和办公协同能力. Quick BI凭借移动端交互体验,帮助用户随时随地便捷查看报表,并通过在线协同方式,追踪策略的执行落地 ...
- [FAQ] Phpstorm 代码提示功能失效问题
如果是之前有代码提示,中间突然不出现提示了,那么考虑重建一下项目索引. 示例: Refer:Phpstorm代码提示 Link:https://www.cnblogs.com/farwish/p/13 ...
- 七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接
前言 上一章节我们引入BootstrapBlazor UI组件完成了EasySQLite后台界面的基本架子的搭建,本章节的主要内容是Blazor班级管理页面编写和接口对接. 七天.NET 8 操作 S ...
- Linux下的目录
FHS 因为利用Linux来开发产品或distributions的社群/公司与个人实在太多了, 如果每个人都用自己的想法来配置文件放置的目录,那么将可能造成很多管理上的困扰. 你能想象,你进入一个企业 ...
- nim 4. 模块
看了一下nim的模块系统,真的非常简洁. 1) 一个nim文件就是一个模块 2) 通过import 引入模块,引入的时候不需要带扩展名, 比如有个模块 mod1.nim, 引入的时候: import ...
- 如何在Ubuntu 16.04上安装和保护MongoDB
第1步 - 添加MongoDB存储库 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14 ...
- python教程1.1:环境安装+代码编辑器安装
1.环境安装 打开官⽹ https://www.python.org/downloads/windows/ 下载中 下载后执⾏,点击下⼀步安装就⾏,注意选择添加Python到当前⽤户环境变量 2.代码 ...
- sql 查找是否存在的记录
场景:根据条件从数据库表中查询 『有』与『没有』,只有两种状态 方法1: SELECT count(*) FROM table WHERE a = 1 方法2: SELECT 1 FROM table ...
- 原生微信小程序button去掉边框
直接改没反应,需要使用::after更改
- Lua热更学习--使用toLua中的协程
[6] C#访问调table类中的成员变量和函数 访问table中的变量和函数 lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和functi ...