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 是例外情况,稍后我们再讨论).指令的职责是,当表达式的值改变 ...
随机推荐
- 谢老师2024春 - Day1:组合数学
Day1:组合数学 A - P5520 [yLOI2019] 青原樱 隔板法: 已选择的位置:\(m\) 棵樱花树. 未选择的位置:\(n-m\) 个空位置 板的数量(一棵樱花树就是一个板):\(m\ ...
- Serverless 在阿里云函数计算中的实践
简介: 近日,阿里云 aPaaS&Serverless 前端技术专家袁坤在 CSDN 云原生 meetup 长沙站分享了 Serverless 在阿里云函数计算 FC 的实践. 作者:CSDN ...
- 谈谈JVM内部锁升级过程
简介: 对象在内存中的内存布局是什么样的?如何描述synchronized和ReentrantLock的底层实现和重入的底层原理?为什么AQS底层是CAS+volatile?锁的四种状态和锁升级过程应 ...
- DLF +DDI 一站式数据湖构建与分析最佳实践
简介: 本文由阿里云数据湖构建 DLF 团队和 Databricks 数据洞察团队联合撰写,旨在帮助您更深入地了解阿里云数据湖构建(DLF)+Databricks 数据洞察(DDI)构建一站式云上数据 ...
- [Go] golang 两个数组 list 的合并方式
s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...
- WPF 推荐一个剪贴板内容查看工具
本文来安利大家一个好用的 Windows 剪贴板的内容查看工具 这是在 GitHub 上完全免费开源的应用,由 walterlv 开发的应用,详细请看 https://github.com/walte ...
- 2.docker-compose安装prometheus
一.docker-compose安装 前期准备 # docker配置文件 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json < ...
- 2021年5.21NCU第四届校赛
比赛地址:http://222.204.50.106/contest/39 A 树上祖先 链接:http://222.204.50.106/contest/39/problem/A B 莎士比亚 链接 ...
- Flutter 多线程实现
异步Isolate实现多线程 最近在看Flutter开发相关知识点,对照着Android原生,探究了下多线程实现方式.在Flutter中有 Isolate,隔离,它的实现原理并不是内存共享的,它更 ...
- prometheus使用2
参考不错的 Prometheus监控实战之node_exporter详解: https://blog.csdn.net/ygq13572549874/article/details/129115350 ...